windows程序设计中MM_TEXT模式下的逻辑坐标与设备坐标的转换

在Windows程序设计的MM_TEXT模式下,逻辑坐标和设备坐标原点默认在客户区左上角。通过SetViewportOrgEx()和SetWindowOrgEX()可以改变坐标原点。文章探讨了如何在坐标变换后找到逻辑坐标(0,0)在客户区的位置,强调逻辑坐标原点应与设备坐标原点重合,设备坐标(0,0)始终位于客户区左上角。" 51943063,5662458,自定义ExpandableListView分组分割线,"['android开发', 'expandablelistview']
摘要由CSDN通过智能技术生成

       在windows程序设计中,MM_TEXT模式下逻辑坐标和设备坐标原点默认是(0 , 0) ,在客户区左上角。x轴从左到右增加,y轴从上到下增加。当使用SetViewportOrgEx() 和 SetWinodwOrgEX()函数修改设备坐标系和窗口(逻辑)坐标系时,我们该怎么简单的找到逻辑坐标系点(0 , 0 )在变换后的位置,一种简单的方法是移动逻辑坐标系原点去和设备坐标系原点重合(注意:不管设备坐标系原点如何变化,设备坐标(0,0)始终在客户区左上角),移动重合后就很容易找到逻辑坐标点(0,0)在客户区的位置。举例如下:

设客户区宽度为cxClient , 高度为cyClient ,如果我们使用函数SetViewportOrgEx(hdc , cxClient / 2 , cyClient / y , NULL) ,把逻辑坐标原点(此时为(0 ,0))平移到设备坐标原点(cxClient / 2 , cyClient / 2),容易得出逻辑坐标(0,0)在客户区中心(cxClient / 2 , cyClient / 2);若使用函数SetWindowOrgEx(hdc , -cxClient / 2 , -cyClient / 2 , NULL),此时逻辑坐标原点变成(-cxClient / 2 , -cyClient / 2),我们平移这个点到设备坐标原点(0,0),容易得出此时逻辑坐标点(0,0)被平移到了客户区中心(cxClient , cyClient);再若一起使用SetVie

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值