Windows程序设计:GDI映射模式
  FnrD2XWlpoQk 2023年11月02日 94 0


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模式:

Windows程序设计:GDI映射模式_Windows


LOMETRIC:模式

Windows程序设计:GDI映射模式_Windows_02


HIMMETRIC模式:


Windows程序设计:GDI映射模式_Windows_03


ENGLISH模式:

Windows程序设计:GDI映射模式_Windows_04


MM_TWIPS模式:

Windows程序设计:GDI映射模式_Windows_05


具体适用案例:


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;



效果:

Windows程序设计:GDI映射模式_Windows_06



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  3PLN4iWezbye   2023年11月13日   34   0   0 windowsneo4j
FnrD2XWlpoQk