SetWindowOrgEx(..)到底啥意思?树上有这个说法:
SetViewportOrgEx(hdc,cxClient / 2, cyClient / 2, NULL);把原点设在客户区中心,
用实现SetWindowOrgEx(hdc,-cxClient / 2, -cyClient / 2, NULL);可以实现同样功能.为何啊?
想了好久还是不明白啊.:(

解决方案 »

  1.   

    众所周知,VC中的坐标系统分为逻辑坐标和设备坐标,逻辑坐标就是内存中虚拟的坐标,我们可以理解为看不见的,而设备坐标就是跟具体的设备相联系的坐标系统,如:显示器和打印机等。不同的映射模式决定了设备坐标和逻辑坐标之间的转换关系,也就是两种坐标系统在相互转换时,逻辑单位和设备单位之间的某种比例关系。这里需要说明的是:Windows中,只有对需要设备环境句柄作参数的GDI函数,映射方式才会起作用。
    对于视口和窗口的概念比较的容易混淆,其实窗口和视口是与映射模式相关联的:映射方式就是用于从"窗口"(逻辑坐标)到"视口"(设备坐标)的映射。"视口"是基于设备坐标的,通常,视口与客户区相同;"窗口"是基于逻辑坐标的,逻辑坐标可以是像素、毫米、英寸等。
    下面的公式是将窗口(逻辑)坐标转化为视口(设备)坐标: 
     
    xViewport = (xWindow - xWinOrg)*xViewExt/xWinExt + xViewOrg
    yViewport = (yWindow - yWinOrg)*yViewExt/yWinExt + yViewOrg
    (xWindow,yWindow)是待转换的逻辑点,(xViewport,yViewport)是转换后的设备坐标。  详细信息:http://www.vckbase.com/document/viewdoc/?id=312