📄 custhistogramdlg.cpp
字号:
// CustHistogramDlg.cpp : implementation file
//
#include "stdafx.h"
#include "RSIP.h"
#include "CustHistogramDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCustHistogramDlg dialog
CCustHistogramDlg::CCustHistogramDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCustHistogramDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCustHistogramDlg)
m_fileSelected = _T("");
m_wholemapChecked = FALSE;
//}}AFX_DATA_INIT
m_modelSize = 1;
m_nImgHeight = 0;
m_nImgWidth = 0;
m_bOperateMode = FALSE;
}
void CCustHistogramDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCustHistogramDlg)
DDX_Control(pDX, IDC_MODELSIZE, m_modelSizeList);
DDX_Text(pDX, IDC_FILE_SELECTED, m_fileSelected);
DDX_Check(pDX, IDC_WHOLEMAP_CHECK, m_wholemapChecked);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCustHistogramDlg, CDialog)
//{{AFX_MSG_MAP(CCustHistogramDlg)
ON_BN_CLICKED(IDC_WHOLEMAP_CHECK, OnWholemapCheck)
ON_BN_CLICKED(IDC_SELECTFILE, OnSelectfile)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCustHistogramDlg message handlers
void CCustHistogramDlg::OnWholemapCheck()
{
UpdateData(TRUE);
if(IsDlgButtonChecked(IDC_WHOLEMAP_CHECK))
{
GetDlgItem(IDC_MODELSIZE)->EnableWindow(FALSE);
}
else
{
GetDlgItem(IDC_MODELSIZE)->EnableWindow(TRUE);
}
UpdateData(FALSE);
}
void CCustHistogramDlg::OnSelectfile()
{
UpdateData(TRUE);
CFileDialog dlg(TRUE,"dat",NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"Image Files(*.dat)|*.dat||",NULL);
if(dlg.DoModal() == IDOK)
{
m_fileSelected = dlg.GetPathName();
m_fileSelected.TrimLeft();
m_fileSelected.TrimRight();
int length = m_fileSelected.GetLength();
CString infFileName = m_fileSelected.Left(length - 4)+".inf";
CFile infFile;
if(0 != infFile.Open(infFileName,CFile::modeRead))
{
CRSImage RSImage;
RSImage.LoadRsInfo(&infFile);
infFile.Close();
if(RSImage.m_nImgType != IMAGE_SINGLEBAND)
{
AfxMessageBox("该图像不是单波段图像。\n\n请选择单波段图像进行直方图匹配!");
return;
}
if(m_wholemapChecked == FALSE)
{
if(m_nImgHeight-RSImage.m_nImgHeight!=0 ||
m_nImgWidth-RSImage.m_nImgWidth!=0)
{
AfxMessageBox("该图像与本图像尺寸不符合!");
return;
}
}
}
else
{
AfxMessageBox("找不到该图像的信息文件!");
return;
}
}
UpdateData(FALSE);
}
BOOL CCustHistogramDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_modelSizeList.ResetContent();
m_modelSizeList.AddString("3 X 3"); // 0
m_modelSizeList.AddString("5 X 5"); // 1
m_modelSizeList.AddString("7 X 7"); // 2
m_modelSizeList.AddString("9 X 9"); // 3
m_modelSizeList.AddString("11 X 11"); // 4
m_modelSizeList.AddString("13 X 13"); // 5
m_modelSizeList.AddString("15 X 15"); // 6
m_modelSizeList.AddString("17 X 17"); // 7
m_modelSizeList.AddString("19 X 19"); // 8
m_modelSizeList.AddString("21 X 21"); // 9
m_modelSizeList.AddString("23 X 23"); // 10
m_modelSizeList.AddString("25 X 25"); // 11
m_modelSizeList.AddString("27 X 27"); // 12
m_modelSizeList.AddString("29 X 29"); // 13
m_modelSizeList.AddString("31 X 31"); // 14
m_modelSizeList.AddString("33 X 33"); // 15
GetDlgItem(IDC_MODELSIZE)->EnableWindow(!IsDlgButtonChecked(IDC_WHOLEMAP_CHECK));
if(m_bOperateMode == FALSE)
SetWindowText("直方图匹配");
else
SetWindowText("均值匹配");
return TRUE;
}
void CCustHistogramDlg::OnOK()
{
UpdateData(TRUE);
if(m_wholemapChecked == FALSE)
{
int curSelected = m_modelSizeList.GetCurSel();
m_modelSize = 2 * curSelected + 3;
}
CDialog::OnOK();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -