SetWindowOrg & SetViewportOrg

关于这两个函数在网上查了几篇文章,说法不完全一样,经过一些代码实验现将自己的理解记录如下:

首先引入概念:页面空间到设备空间的转换所用的是两个矩形的宽与高的比率(转换因子),其中页面空间中的矩形被称为窗口(使用逻辑坐标),设备空间中的矩形被称为视口(使用设备坐标),Windows把窗口原点映射到视口原点,把窗口范围映射到视口范围,就完成了这种转换[1]。

在下认为上面红色字体所说的映射转换是Windows自动实现的,程序员需要做的工作就是设定好原点坐标、窗口尺寸和映射模式。

几乎在所有GDI函数中使用的坐标值都是逻辑坐标,Windows对所有的消息、所有的非GDI函数和个别GDI函数(例如GetGeviceCaps函数)采用设备坐标[1]。

逻辑坐标是系统用作记录的坐标[2],是一个抽象的平面坐标系,它的x轴和y轴方向以及坐标单位由映射模式和相关参数设置决定。

设备坐标是指输出设备上的坐标(如屏幕),以像素为单位,x轴向右为正,y轴向下为正[2]。

注:关于设备坐标的方向,孙鑫的《VC++深入详解》中也是说x轴向右为正,y轴向下为正。但是在下通过程序实验发觉有不同的解释,具体见下面的例子。

1. 关于逻辑原点和设备原点

网易博主embeded

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值