Programming Windows (四)_ SetViewportOrgEx() 与 SetWindowportOrgEx()

SetWindowOrgEx
这个Window是看不见的,可以假想有这么一个Window,提供GDI画图函数以逻辑 坐标来画图,这个坐标系也叫page space坐标系,有自定义原点与单位长度(逻辑单位,如0.1mm,从而可以与设备无关)


SetViewportOrgEx
物 理设备坐标总是以左为原点,以像素为单位,x向右,y向下
viewport与之区别是原点可以由SetViewportOrgEx 改变,以及大小可以由SetViewportExtEx改变,这个坐标系也叫device space坐标系,viewport也是看不到的,真 的能看到的只有物理坐标系

SetWindowExtEx

设定page space的大小

SetViewportExtEx

设 定device space的大小

四个函数完成其功能时均参考自己所在的坐标系,并且改变自己所在的坐标系

page space坐标系映射到device space坐标系
原点重合,大小关系为两个坐标系的大小关系:
(xViewport - xViewportOrg) / (xWindow - xWindowOrg) = xViewportExt / xWindowExt
一般 用SetMapMode改变映射的大小关系以及page space  的坐标方向

device space坐标系映射到物理设备坐标系,都以像素为单位,所以只需考虑位移



for example:

SetMapMode (hdc, MM_ISOTROPIC) ;
SetWindowExtEx (hdc, 276, 72, NULL) ;
SetViewportExtEx (hdc, cxClient, cyClient, NULL) ;
SetWindowOrgEx (hdc, 138, 36, NULL) ;
SetViewportOrgEx (hdc, cxClient / 2, cyClient / 2, NULL) ;










If you change the viewport orgin to (xViewOrg, yViewOrg), the logical point(0, 0)will be mapped to the device point(xViewOrg, yViewOrg)




If you change the window origin to (xWinOrg, yWinOrg), the logical point(xWinOrg, yWinOrg) will be mapped to the device point(0,0)






Regardless of any changes you make to the window and viewport origins, the device point(0, 0) is always the upper left corner of the client area

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值