当前位置:鱼C工作室 >Windows程序设计 > 查看文章

坐标转换 – Windows程序设计(SDK)027

坐标转换

 

让编程改变世界

Change the world by program


 

上节课要求大家课后自己来完成正弦函数的绘制,大家应该有去落实吧?我已经把参考答案放在上节课的课后作业中了,不过怕有些童鞋看到长长文字会犯困,我还是在这里统一讲一下吧,因为也涉及到一些比较重要的知识。让大家自己去看我也不放心哈。

 

如果你实现后的样式是这样:

1

 

或者这样:

2

 

那你应该很清楚,肯定是有哪里不对劲?!

没错,仔细琢磨你会发现忽略了一个问题,那就是修改了映射模式之后,单位也会随之发生改变。

 

也就是说,当你调用 PolylineTo(hdc, apt, NUM);将一连串的点显示到屏幕上的时候,这些点的坐标是以 0.1 毫米为单位(因为我们使用了 MM_LOMETRIC 映射模式),而我们计算正弦曲线的坐标则是以像素为单位。

 

大家还记得吧,上节课我们强调 Windows 对所有的消息均使用设备坐标,也就是以像素为单位。因此,代表客户区宽度和高度的 cxClient 和 cyClient 的单位也是像素,因此我们需要将客户区的宽度和高度以 0.1 毫米为单位来表示才行。

 

Windows有两个API函数用户逻辑坐标与设备坐标之间的转换,将设备坐标转换为逻辑坐标,我们使用 DPtoLP 函数,相反,将逻辑坐标转换为设备坐标,我们使用 LPtoDP 函数。

 

…… 此处省略N多内容,具体请看视频讲解 ……

 

– 【API档案】DPtoLP

– 【API档案】LPtoDP


为您推荐

报歉!评论已关闭.