关于SetWindowOrgEx和SetViewPortOrgEx之区别

来源:互联网 发布:mac删除应用 编辑:程序博客网 时间:2024/05/22 02:04
在http://topic.csdn.net/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.csdn.net/detail/xizero00/4211590
	
				
		
原创粉丝点击