关于SetWindowOrgEx和SetViewPortOrgEx之区别

本文详细解释了视口和窗口的区别,并通过实验结果直观展示了两种原点操作的差异。通过SetViewportOrgEx和SetWindowsOrgEx函数的对比,阐述了如何在不同坐标系下移动图像或客户区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://topic.youkuaiyun.com/u/20120409/02/f13fa322-f95d-4491-92e5-ef44c7223a35.html?seed=944436769&r=78183266#r_78183266
看到了楼主的提问仔细研究了一下这两个函数的区别,同时也防止自己忘记。
视口:
基于设备坐标的,就是视口的(0,0)即对应设备坐标的(0,0)。
窗口:
基于逻辑坐标的,即窗口坐标(0,0)对应逻辑坐标(0,0)。在一般情况下,两者的原点重叠,只是量度单位不同。
只是,在使用SetViewportOrgEx()函数或SetWindowsOrgEx()函数会分别改变两者的原点。
直观一点
SetViewportOrgEx()函数是客户区不动,图像的原点坐标移动。
SetWindowsOrgEx()函数是图像的原点坐标不动,客户区移动。
另外
映射方式的不同会使得两者的范围不同。
如果还有不理解的话也很正常,分别使用SetViewportOrgEx()函数和SetWindowsOrgEx()函数设置坐标后,用TextOut()函数输出字符串。通过查看字符串在客户区的实际位置便可以稍微清晰的理解。
下面给出我实验的结果来验证这一点
下面的图片是原始图片

图1 原始图片

图2 使用SetViewPortOrgEx调整的效果
这里我们使用了SetViewPortOrgEx来调整视口,可以知道调整视口的操作其实就是将图像的原点移动到你所指定的坐标

 
图3 使用SetWindowOrgEx调整的效果
这里我们可以知道,使用了SetWindowOrgEx调整之后发现客户区的位置动了,调整到指定的坐标上去了。
 
总结:
SetViewPortOrgEx动的是图像,也就是说将图像进行移动
SetWindowOrgEx动的是客户区,也就是说将客户区进行移动
这下理解它们的区别了吧。Mark
下面给出我的示例代码:
http://download.youkuaiyun.com/detail/xizero00/4211590

                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值