VC++开发GIS系统(50)使用自定义平面坐标系
发布时间: 2015-12-17
所属分类: VC++开发GIS系统
在上一篇文章《VC++开发GIS系统(49)屏幕坐标转换编码》中已经完成了MFC中的默认坐标和GIS系统中平面坐标的转换关系,本文介绍一下调用方法。
系统调用示例
在malagisView.h里增加一个记录当前屏幕信息的变量
public:
malaScreen mScreen;
在malagisView.cpp里给变量初始化
CmalagisView::CmalagisView()
{
// TODO: 在此处添加构造代码
mBaseOper = NULL;
//屏幕坐标初始化
mScreen.lbx = 0.0;
mScreen.lby = 0.0;
mScreen.scale = 1.0;
}
这里只给左下角的坐标和初始比例尺做了初始化,还需要初始化屏幕的宽度和高度,这需要OnSize函数中初始化。切换到类视图,在CmalagisView上右击,选择属性。然后重写OnSize函数,如图:
在OnSize函数中添加下面代码
void CmalagisView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
mScreen.hScreen = cy;//Client窗口高度
mScreen.wScreen = cx;//Client窗口宽度
}
测试当前坐标
在OnLButtonDown中增加下面的代码
void CmalagisView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//===测试自定义平面坐标系===
double nx = 0;
double ny = 0;
ScreenToCoord(point.x, point.y, mScreen, &nx, &ny);
CString a;
a.Format(L"%f", nx);
CString b;
b.Format(L"%f", ny);
MessageBox(a +L" "+ b);
//===测试自定义平面坐标系===
malaPoint tmpPoint;
tmpPoint.x = (double)point.x;
tmpPoint.y = (double)point.y;
if (mBaseOper)
{
mBaseOper->LButtonDown(nFlags, tmpPoint);
}
CView::OnLButtonDown(nFlags, point);
}
这段代码的作用是点击鼠标左键的时候弹出点击位置的平面坐标,效果如图:
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读
最新GIS干货
私享圈子