坐标映射可以如下,总之让X坐标或Y坐标反向一下,就会出现我所说的问题:
SetMapMode(HDC, MM_ANISOTROPIC);
SetWindowExtEx(HDC, WIDTH, HEIGHT, 0);
SetViewportExtEx(HDC, -WIDTH, HEIGHT, 0);
SetViewportOrgEx(HDC, WIDTH, 0, 0);//下面是测试代码,显示的结果都比不映射坐标时长一个象素,大家用放大镜看看吧
::SetBkMode(hDC, OPAQUE);
::SetBkColor(hDC, 255);
TextOut(hDC, 25, 15, L"000", 3);
::SetBkMode(hDC, TRANSPARENT);
SetMapMode(HDC, MM_ANISOTROPIC);
SetWindowExtEx(HDC, WIDTH, HEIGHT, 0);
SetViewportExtEx(HDC, -WIDTH, HEIGHT, 0);
SetViewportOrgEx(HDC, WIDTH, 0, 0);//下面是测试代码,显示的结果都比不映射坐标时长一个象素,大家用放大镜看看吧
::SetBkMode(hDC, OPAQUE);
::SetBkColor(hDC, 255);
TextOut(hDC, 25, 15, L"000", 3);
::SetBkMode(hDC, TRANSPARENT);
::SetBkMode(hDC, OPAQUE);
::SetBkColor(hDC, 255);
这样大家可以看清楚,注意看输出那个红色背景。
像我那样映射,不会除不尽的。
就算除不尽,也只是影响TextOut的输出位置,看清楚,映射后的窗口的大小比例是1比1的。