m_pHRCBand->OpenNewData(strFilePath);
}
else
{
// 建立波段对话框
m_pHRCBand = new CHRCBand;
m_pHRCBand->m_strFilePath = strFilePath;
m_pHRCBand->m_strFileTitle = strFileTitle;
m_pHRCBand->Create(CHRCBand::IDD);
m_pHRCBand->ShowWindow(SW_SHOW);
}
}
子菜单移动
主程序与子菜单的文件信息选项单独显示,当移动主程序是,子菜单跟随主菜单一起移动,使得界面更加友好。
主要实现:
// 移动子对话框
CRect rcDlg;
GetWindowRect(&rcDlg);
CString strData;
strData.Format(_T("%d,%d"), rcDlg.left, rcDlg.top);
COPYDATASTRUCT data = {0};
data.dwData = (DWORD)this->GetSafeHwnd();
data.cbData = strData.GetLength();
data.lpData = strData.GetBuffer(strData.GetLength());
图像显示
图像显示可根据选择的波段,查看灰度(一个波段)或彩色(三个波段)图像。
首先,选择需要查看的波段,根据灰度或彩色选择一个或三个波段。把之前打开的第2%小和第98%大的DN值记录下来,根据该波段的DN值生成数据,进行位图头设置、调色板设置、过滤、拉伸。由得到的数据显示,最后设定滚动条等信息。
主要实现代码:
// 获取图像信息
BITMAP bitmap;
GetObject(m_hBmp, sizeof(BITMAP), &bitmap);
m_HRCImgHdr.set_samples(bitmap.bmWidth);
m_HRCImgHdr.set_lines(bitmap.bmHeight);
// 图像控件的位置
GetDlgItem(IDC_HRCIMG_IMG_PICTURE)->GetWindowRect(m_rcImg);
ScreenToClient(&m_rcImg);
CRect rect;
GetClientRect(rect);
int xpos = GetScrollPos(SB_HORZ);
if (xpos != 0) ScrollWindow(xpos, 0); // 恢复窗口的水平滚动区域
int ypos = GetScrollPos(SB_VERT);
if (ypos != 0) ScrollWindow(0, ypos); // 恢复窗口的垂直滚动区域
4.2 辐射校正模块的设计与实现
辐射校正模块为本系统核心功能。整体流程为:首先,保存待校正文件路径列表,打开数据选择对话框。进行判断,如记录选择的是那一块数据。然后设置校正的一些选项:是否并行、是否手动保存数据。最后,进行校正。校正分为两个部分,界面进度条,用于显示校正进度;矩匹配线程,专门用于计算。
辐射校正整体流程如图4-5所示:
图4-5 辐射校正整体流程4.2.1 选择数据界面实现
选择数据界面如图4-6所示 机载高光谱图像边缘辐射校正并行处理系统设计(9):http://www.751com.cn/jisuanji/lunwen_3683.html