| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1421 人关注过本帖
标题:[原创]利用MFC作图中的坐标系问题-->wfpb转移
只看楼主 加入收藏
蓝天飞鸿
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-10-2
收藏
 问题点数:0 回复次数:1 
[原创]利用MFC作图中的坐标系问题-->wfpb转移

首先想说明的是,对于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()来获取,从而进行坐标转换。

搜索更多相关主题的帖子: MFC wfpb 坐标系 
2006-10-13 21:31
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
是不是发错地方了呢?

=×&D o I p R e E n C g T l X&×=
2006-10-15 11:47
快速回复:[原创]利用MFC作图中的坐标系问题-->wfpb转移
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047052 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved