Windows有多种映射模式可以选择:
#define MM_TEXT 1 //1逻辑单位=1像素
#define MM_LOMETRIC 2 //1逻辑单位 = 0.1mm
#define MM_HIMETRIC 3 //1逻辑单位 = 0.01mm
#define MM_LOENGLISH 4
#define MM_HIENGLISH 5 //1 = 0.01in = 0.254mm
#define MM_TWIPS 6
#define MM_ISOTROPIC 7
#define MM_ANISOTROPIC 8
一般在Windows编程中,默认模式不够精确,不能准确地描述图形
不同分辨率的显示器的换算单位也不一样
所以我们需要改变映射模式
模式样式:
TEXT模式:
LOMETRIC:模式
HIMMETRIC模式:
ENGLISH模式:
MM_TWIPS模式:
具体适用案例:
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
int iMapMode = GetMapMode(hdc);
SetMapMode(hdc, MM_TEXT); //TEXT模式
Rectangle(hdc, 200, 200, 400, 400);
SetMapMode(hdc, MM_LOMETRIC);
Rectangle(hdc, 200, -200, 400, -400);
SetMapMode(hdc, MM_HIMETRIC);
Rectangle(hdc, 200, -200, 400, -400);
SetMapMode(hdc, iMapMode);
EndPaint(hWnd, &ps);
}
break;
效果: