本研究探讨了摄影测量技术中的关键步骤——内定向程序。通过精确校准像片上的坐标与地图网格之间的关系,确保后续外业测量的准确性及可靠性。此过程对于提升地理信息系统的数据质量至关重要。
编程要点:坐标转换
在程序的`OnLButtonDown(UINT nFlags, CPoint point)` 和 `OnMouseMove(UINT nFlags, CPoint point)` 方法中加入以下代码:
```cpp
CClientDC dc(this); // 定义设备对象
OnPrepareDC(&dc); // 初始化设备对象
CPoint local = point; // 定义并初始化为设备坐标
dc.DPtoLP(&local); // 将设备坐标转换为逻辑坐标
// 显示光标位置
CString msg;
msg.Format( X = %4d, Y = %4d , local.x, local.y);
CMainFrame* pAppFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
pAppFrame->m_wndStatusBar.SetPaneText(0,msg);
pAppFrame->m_wndStatusBar.UpdateWindow();
// 改变光标
CSize ScrollSize=GetTotalSize();
CRect ScrollRect(0, 0, ScrollSize.cx, ScrollSize.cy);
if(m_SelectFunction != 13) {
if(!ScrollRect.PtInRect(local))
::SetCursor(m_HCross);
else
::SetCursor(m_HArrow); // 将该段程序放入OnMouseMove(UINT nFlags, CPoint point)中
}
// 在视图类的头文件中的public后面加上以下光标句柄定义:
HCURSOR m_HArrow;
HCURSOR m_HCross;
// 在视图类构造器中加入如下代码以初始化光标:
m_HArrow = AfxGetApp()->LoadStandardCursor(IDC_ARROW);
m_HCross = AfxGetApp()->LoadStandardCursor(IDC_CROSS);
```
以上是处理鼠标事件时,实现坐标转换、显示当前位置以及根据位置改变鼠标的提示光标的步骤。