[MFC]映射模式、坐标转换、原点移动

本文介绍了MFC中映射模式的概念及其重要性,详细讲解了常用的GDI映射模式,如MM_TEXT、MM_LOMETRIC等,并强调在公制映射模式下坐标处理的注意事项。此外,还探讨了可编程映射模式,包括自定义映射比例和轴方向的方法。同时,讨论了坐标转换的函数,如LPtoDP和DPtoLP,以及移动原点的方法,如SetWindowOrg和SetViewportOrg,帮助理解在不同映射模式下的坐标操作。
摘要由CSDN通过智能技术生成

1. 映射模式的概念:

    1) 也是DC的重要属性之一,它和绘图时的尺寸有关;

    2) 在没有映射模式的时候绘图只能以像素点为单位长度进行绘图,但是这样做有一个明显的坏处就是,不同显示器分辨率、屏幕大小各不相同,在一个屏幕上画1000像素长的线很长,同样像素点的长度换到另一个屏幕上看上去却可能很短,这无法达到不同屏幕绘制的图形效果相同的目的,因此要引入映射模式这个功能来解决上述问题;

    3) 映射模式规定,在利用GDI绘图的时候统一使用逻辑长度单位,然后通过某种方法(公式)将逻辑尺寸映射成实际物理屏幕的像素点长度,不同映射模式决定了一个逻辑单位代表多少个像素点长;

    4) 映射模式的两个对象:

         i. 逻辑坐标:即传递给绘图API函数的坐标值,是一种抽象、统一、设备无关的人为假定的坐标值;

         ii. 设备坐标:即屏幕上的具体像素点坐标;

         iii. 映射模式决定了如何从逻辑坐标转化成设备坐标,因为具体的物理设备只认识像素点位置这个东西,就好像计算机只认识01一样;

    5) 映射模式属性的操作:SetMapMode、GetMapeMode,默认值是MM_TEXT,MM即MapMode的缩写,默认的MM_TEXT映射模式不做任何映射,逻辑单位1就代表1个像素点;


2. 常用的GDI映射模式:

    1) 有了映射模式就可以选择诸如“一逻辑单位等于1厘米”之类的映射模式了,这样则在绘图时长度、尺寸等就和屏幕分辨率无关了,不同屏幕之间的调整完全都是自动的,MFC内部全部都实现了,比如在一块屏幕上一厘米等于100个像素点,而另一块屏幕上一厘米等于135个像素点,这这些映射工作MFC都在内部自动完成了,这样就可以实现按比例的缩放,并且与屏幕分辨率、大小无关;

    2) 常用的映射模式:其中原点都是左上角,x轴都是朝右的

MM_TEXT:1 pixel / 1 lg,y+

MM_LOMETRIC:0.1 mm / 1 lg,y-</

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值