Win32(视口和窗口、坐标映射、自定义映射)

什么是视口和窗口

首先需要明白的什么是视口和窗口,其实很简单,窗口自己有一个坐标体系,我们称为逻辑坐标,我们在编程输入坐标的时候,对应的都是逻辑坐标,而视口对应的是设备坐标,单位是屏幕的像素。
显示器显示内容时会把我们输入的逻辑坐标转换为设备坐标,为什么要这么麻烦呢?答:为了自己定义一个合适的坐标轴,具体往下看。
那就要提到映射模式了,在Win32中我们可以使用SetMapMode()函数来修改二者的映射模式,具体可以看以下链接:
https://fishc.com.cn/forum.php?mod=viewthread&tid=64573&extra=page%3D4%26filter%3Dtypeid%26typeid%3D420

映射模式是用来干嘛的

映射模式是用来干嘛的呢,我们知道,win32中的设备坐标默认情况下,无论那种坐标,原点都是在左上角,x轴向右为正,y轴向下为正,这在很多时候是不方便的,我们需要可以自己定义一个坐标,想想我们在纸上作图的时候,会借助于坐标轴,而为了方便,我们常常会在特定的地方画一个坐标轴,并且,我们可以自己标刻度大小,而在win32里面,整个客户区,可以将其看作一张白纸(客户区坐标称为窗口坐标,这个坐标一直不会改变,且原点一直在左上角),我们想要在这张纸的某一个点绘制一个坐标轴的时候,只需要使用SetViewportOrgEx()函数,指定要显示的视口坐标原点在客户区中的位置即可,需要注意的是视口原点和窗口原点是重合的,所以我们同样可以使用SetWindowOrgEx()函数来修改显示的坐标来达到同样的效果。

以上,我们知道了怎么在客户区的任意位置画一个坐标轴,但是我们只确定了原点的位置,这个坐标轴的横纵坐标的方向以及刻度(每一单位对应多少像素)我们还没有进行设定呢,win32本身以及给了我们一些固定的设定,也就是我们刚提到的映射模式,在映射模式中,我们规定了横纵坐标的方向,(比如MM_LOMETRIC模式,表示了每个逻辑单位映射为 0.1 毫米,x 轴向右,y 轴向上,简单来说,我们编程设计坐标时,设定在10,10位置上显示一个点,根据这个映射模式来说,会在我们设定的原点的右上方横向和纵向距离位0.1*10mm位置处出现一个点),定义好映射模式之后

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值