GDI的坐标映射搞了半天才明白

只怪我自己太笨了,这么简单的东西,搞了半天才弄明白。

首先通过 SetMapMode函数修改坐标映射模式,我这里使用了MM_ANISOTROPIC模式。

SetMapMode(hDC,MM_ANISOTROPIC);

然后调用SetWindowExtEx函数设置逻辑坐标。我们把基数调简单一点为1,1

SetWindowExtEx(hDC,1,1,NULL);

再调用SetViewportExtEx函数设置设备坐标。

SetViewportExtEx(hDC,2,2,NULL);

然后调用MoveTo和LineTo画线。

MoveTo(0,0);LineTo(50,50)。

由于我们使用坐标映射修改了坐标比例。那么参数里的实际坐标长度应该是Move(0 * (2/1),0 * (2/1)) LineTo(50 * (2/1), 50 * (2/1));

这样大家能看明白吗?

设置DC坐标映射,你作画时的实际坐标,就会根据坐标映射比例(Viewport ÷ Window) 进行缩放。大家可以去实验一下。

 

这个还有朋友不理解的给我留言好了。。。

原文地址:https://www.cnblogs.com/linweifu/p/1813088.html