MFC坐标系 精华

总结:

保持X轴正向向右不变,当Y轴正向向下时

dc.SetViewportOrg(x, y);与dc.SetWindowOrg(-x,   -y);等价

当Y轴正向向上时

dc.SetViewportOrg(x, y);与dc.SetWindowOrg(-x,   y);等价

需要强调一点,设备原点永远不会移动,保持在(0,0),设备的坐标系永远不会变,变的是逻辑原点在设备坐标系中的位置和逻辑坐标轴的方向。



核心代码:

CRect rectClient;

GetClientRect(rectClient);

pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(CSize(900,900)); //逻辑窗口

pDC->SetViewportExt(rectClient.right,rectClient.bottom); //物理设备

pDC->SetViewportOrg(0,0); //设置窗口左下角为原点坐标

pDC->Ellipse(0,0,900,900);


这段代码很重要,基本上涵盖了设备坐标转换的核心:它的通俗意思为:

以任意比例方式,将逻辑的CRect(0,0,900,900)映射到设备的rectClient上面,并且设置设置窗口左下角为原点坐标

进行画图。



你可能感兴趣的:(MFC坐标系 精华)