luoxingshun 2014-06-15 01:49
浏览 819

大家好,请问SetViewportOrgEx和SetWindowOrgEx连在一起用的效果

大家好,我在阅读《windows 程序设计》这本书中,作者写道:
1、假设显示区域为cxClient个图素宽和cyClient个图素高。如果想将逻辑点(0,0)定义为显示 区域的中心,可进行如下呼叫:
SetViewportOrgEx (hdc, cxClient / 2, cyClient / 2, NULL) ;
SetViewportOrgEx的参数总是使用设备单位。现在,逻辑点(0,0)将映像为设备点(cxClient/2,cyClient/2)。
2、用下面的SetWindowOrgEx叙述可以获得与上面使用SetViewportOrgEx同样的效果:
SetWindowOrgEx (hdc, -cxClient / 2, -cyClient / 2, NULL) ;
读到这里,我都能明白,现在作者又写了一句话,这句话我看不明白了,
3、您不会将这两个函数一起用,除非您知道这么做的结果:
SetViewportOrgEx (hdc, cxClient / 2, cyClient / 2, NULL) ;
SetWindowOrgEx (hdc, -cxClient / 2, -cyClient / 2, NULL) ;
这意味着逻辑点(-cxClient/2,-cyClient/2)将映像为设备点(cxClient/2, cyClient/2)

现在请问,为什么第3:将SetViewportOrgEx和SetWindowOrgEx连在一起用,会出现逻辑点(-cxClient/2,-cyClient/2)将映像为设备点(cxClient/2, cyClient/2)这种情况,按照作者第1和第2点来看,
SetViewportOrgEx (hdc, cxClient / 2, cyClient / 2, NULL) ;这行代码是逻辑点(0,0)将映像为设备点(cxClient/2,cyClient/2)。然后:
SetWindowOrgEx (hdc, -cxClient / 2, -cyClient / 2, NULL) ;这行代码是将逻辑点(-cxClient / 2,-cyClient / 2)映像为设备点(0,0),
可是SetViewportOrgEx这行代码不是已经将逻辑点(-cxClient / 2,-cyClient / 2)成为了设备点(0,0)了吗?

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!
    • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?