大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C++技巧 > 利用MFC作图中的坐标系问题

利用MFC作图中的坐标系问题

关键词:MFC坐标系  阅读(938) 赞(12)

[摘要]本文主要是对利用MFC作图中的坐标系问题的讲解,希望对您学习C++有所帮助!

    首先想说明的是,关于VC本人刚刚末尾学习,是菜鸟一个。前几天关于绘图的效果郁闷了好一阵子,还好如今已经失掉完全处置。在这个进程中,觉得需求留意的地方我就写出来了,与其他初学者共勉。不对的地方请各位大侠多提建议少拍砖。

用MFC作图首先要留意几个坐标系之间的关系。
MFC的作图函数均采用逻辑坐标,这个坐标系也就是窗口坐标系(与页面坐标系分歧)。设备空间中的矩形称为视口,它是基于设备坐标的(像素),视口即为客户区。

关于鼠标照应获得的点,点的坐标是设备坐标,也就是基于当前视口左上角x-距离和y-距离。由于是设备坐标,因此在将该点传给MFC作图函数时,必需转化为逻辑坐标,然后再调用MFC作图函数。在这个进程中,普通需求中止如下几步设置:
1)用pDC->SetMapdMode()设置映射方式;
2)用pDC->SetWindowOrg()设置窗口原点; /*普通设置在(0, 0)点*/
3)用pDC->SetViewPort()设定视口原点;/*该步可选*/

以上3步普通在OnInitialUpdate()中中止。

4)调用OnPrepareDC(&dc);
5)紧接着pDC->DPtoLP(&point)将鼠标获得点的坐标转化为逻辑坐标;
以上两步普通在鼠标事情照应函数中完成。

6)用pDC->SetWindowExt()设定窗口页面的大小;/*可选*/
7)用pDC->SetViewportExt()设定视口的范围; /*可选*/
8)根据穿过来的点(具有逻辑坐标)运用MFC函数作图。

假定需求失掉当前视口原点在窗口坐标系中的位置,则可以运用pDC->GetViewportOrg()来获取,从而中止坐标转换。



相关评论