⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rotatedlg.cpp

📁 基于小波的SAR斑点处理
💻 CPP
字号:
// RotateDlg.cpp : implementation file
//

#include "stdafx.h"
#include "RSIP.h"
#include "RotateDlg.h"
#include "RSImage.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CRotateDlg dialog


CRotateDlg::CRotateDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CRotateDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRotateDlg)
	m_fDegree = 0.0f;
	m_nDirection = 0;
	//}}AFX_DATA_INIT
}


void CRotateDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRotateDlg)
	DDX_Text(pDX, IDC_EDIT1, m_fDegree);
	DDV_MinMaxFloat(pDX, m_fDegree, 0.f, 360.f);
	DDX_Radio(pDX, IDC_RADIO1, m_nDirection);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRotateDlg, CDialog)
	//{{AFX_MSG_MAP(CRotateDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRotateDlg message handlers

/////////////////////////////////////////////////////////////////////////////
// CResampleDlg dialog


CResampleDlg::CResampleDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CResampleDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CResampleDlg)
	m_nResultWidth = 0;
	m_nResultHeight = 0;
	m_nOriginWidth = 0;
	m_nOriginHeight = 0;
	m_nMethod = 0;
	//}}AFX_DATA_INIT
}


void CResampleDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CResampleDlg)
	DDX_Text(pDX, IDC_RESULTWIDTH, m_nResultWidth);
	DDV_MinMaxInt(pDX, m_nResultWidth, 0, 32767);
	DDX_Text(pDX, IDC_RESULTHEIGHT, m_nResultHeight);
	DDV_MinMaxInt(pDX, m_nResultHeight, 0, 32767);
	DDX_Text(pDX, IDC_ORIGINWIDTH, m_nOriginWidth);
	DDV_MinMaxInt(pDX, m_nOriginWidth, 0, 32767);
	DDX_Text(pDX, IDC_ORIGINHEIGHT, m_nOriginHeight);
	DDV_MinMaxInt(pDX, m_nOriginHeight, 0, 32767);
	DDX_Radio(pDX, IDC_NEARESTPOINT, m_nMethod);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CResampleDlg, CDialog)
	//{{AFX_MSG_MAP(CResampleDlg)
	ON_EN_KILLFOCUS(IDC_RESULTHEIGHT, OnKillfocusResultheight)
	ON_EN_KILLFOCUS(IDC_RESULTWIDTH, OnKillfocusResultwidth)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CResampleDlg message handlers

void CResampleDlg::OnKillfocusResultheight() 
{
	if(IsDlgButtonChecked(IDC_CHECK1))
	{
		int width,height;
		float ratio;
		height = GetDlgItemInt(IDC_RESULTHEIGHT);
		ratio = (float)height/m_nOriginHeight;
		width = int(m_nOriginWidth*ratio);

		SetDlgItemInt(IDC_RESULTWIDTH,width);
	}
}

void CResampleDlg::OnKillfocusResultwidth() 
{
	if(IsDlgButtonChecked(IDC_CHECK1))
	{
		int width,height;
		float ratio;
		width = GetDlgItemInt(IDC_RESULTWIDTH);
		ratio = (float)width/m_nOriginWidth;
		height = int(m_nOriginHeight*ratio);

		SetDlgItemInt(IDC_RESULTHEIGHT,height);
	}	
}


/////////////////////////////////////////////////////////////////////////////
// CImgCombineDlg dialog


CImgCombineDlg::CImgCombineDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CImgCombineDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CImgCombineDlg)
	m_szBlueBand = _T("");
	m_szGreenBand = _T("");
	m_szRedBand = _T("");
	m_nImgHeight = 0;
	m_nImgWidth = 0;
	m_nMethod = 0;
	m_szBand1 = _T("R:");
	m_szBand2 = _T("G:");
	m_szBand3 = _T("B:");
	//}}AFX_DATA_INIT
}


void CImgCombineDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CImgCombineDlg)
	DDX_Text(pDX, IDC_BLUEBAND, m_szBlueBand);
	DDX_Text(pDX, IDC_GREENBAND, m_szGreenBand);
	DDX_Text(pDX, IDC_REDBAND, m_szRedBand);
	DDX_Text(pDX, IDC_IMAGEHEIGHT, m_nImgHeight);
	DDX_Text(pDX, IDC_IMAGEWIDTH, m_nImgWidth);
	DDX_Radio(pDX, IDC_RGB_RADIO, m_nMethod);
	DDX_Text(pDX, IDC_STATIC1, m_szBand1);
	DDX_Text(pDX, IDC_STATIC2, m_szBand2);
	DDX_Text(pDX, IDC_STATIC3, m_szBand3);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CImgCombineDlg, CDialog)
	//{{AFX_MSG_MAP(CImgCombineDlg)
	ON_BN_CLICKED(IDC_GREENBANDDIR, OnGreenbanddir)
	ON_BN_CLICKED(IDC_BLUEBANDDIR, OnBluebanddir)
	ON_BN_CLICKED(IDC_REDBANDDIR, OnRedbanddir)
	ON_BN_CLICKED(IDC_IHS_RADIO, OnIhsRadio)
	ON_BN_CLICKED(IDC_RGB_RADIO, OnRgbRadio)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CImgCombineDlg message handlers

void CImgCombineDlg::OnGreenbanddir() 
{
	CFileDialog dlg(TRUE,"dat",NULL,
		OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		"Image Files(*.dat)|*.dat||",NULL);
	if(dlg.DoModal() == IDOK)
	{
		m_szGreenBand = dlg.GetPathName();

		m_szGreenBand.TrimLeft();
		m_szGreenBand.TrimRight();
		int length = m_szGreenBand.GetLength();
		CString infFileName = m_szGreenBand.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_nImgHeight==0 && m_nImgWidth==0)
			{
				m_nImgHeight = RSImage.m_nImgHeight;
				m_nImgWidth = RSImage.m_nImgWidth;
			}
			else
			{
				if(m_nImgHeight-RSImage.m_nImgHeight!=0 ||
					m_nImgWidth-RSImage.m_nImgWidth!=0)
				{
					AfxMessageBox("该波段图象与其他波段图象尺寸不符合!");
					return;
				}
			}
		}
		else
		{
			AfxMessageBox("找不到该波段图象的信息文件!");
			return;
		}
	}
	UpdateData(FALSE);
}

void CImgCombineDlg::OnBluebanddir() 
{
	CFileDialog dlg(TRUE,"dat",NULL,
		OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		"Image Files(*.dat)|*.dat||",NULL);
	if(dlg.DoModal() == IDOK)
	{
		m_szBlueBand = dlg.GetPathName();

		m_szBlueBand.TrimLeft();
		m_szBlueBand.TrimRight();
		int length = m_szBlueBand.GetLength();
		CString infFileName = m_szBlueBand.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_nImgHeight==0 && m_nImgWidth==0)
			{
				m_nImgHeight = RSImage.m_nImgHeight;
				m_nImgWidth = RSImage.m_nImgWidth;
			}
			else
			{
				if(m_nImgHeight-RSImage.m_nImgHeight!=0 || 
					m_nImgWidth-RSImage.m_nImgWidth!=0)
				{
					AfxMessageBox("该波段图象与其他波段图象尺寸不符合!");
					return;
				}
			}
		}
		else
		{
			AfxMessageBox("找不到该波段图象的信息文件!");
			return;
		}
	}
	UpdateData(FALSE);
}

void CImgCombineDlg::OnRedbanddir() 
{
	CFileDialog dlg(TRUE,"dat",NULL,
		OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		"Image Files(*.dat)|*.dat||",NULL);
	if(dlg.DoModal() == IDOK)
	{
		m_szRedBand = dlg.GetPathName();

		m_szRedBand.TrimLeft();
		m_szRedBand.TrimRight();
		int length = m_szRedBand.GetLength();
		CString infFileName = m_szRedBand.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_nImgHeight==0 && m_nImgWidth==0)
			{
				m_nImgHeight = RSImage.m_nImgHeight;
				m_nImgWidth = RSImage.m_nImgWidth;
			}
			else
			{
				if(m_nImgHeight-RSImage.m_nImgHeight!=0 || 
					m_nImgWidth-RSImage.m_nImgWidth!=0)
				{
					AfxMessageBox("该波段图象与其他波段图象尺寸不符合!");
					return;
				}
			}
		}
		else
		{
			AfxMessageBox("找不到该波段图象的信息文件!");
			return;
		}
	}
	UpdateData(FALSE);
}

void CImgCombineDlg::OnOK() 
{
	UpdateData(TRUE);
	if(m_szRedBand==_T("") ||
		m_szBlueBand==_T("") ||
		m_szGreenBand==_T(""))
	{
		AfxMessageBox("参加图象合成的波段不足三个!");
		return;
	}
	
	CDialog::OnOK();
}

void CImgCombineDlg::OnIhsRadio() 
{
	if(m_nMethod == 0)
		m_nMethod = 1;
	else
		return;

	m_szBand1 = _T("I:");
	m_szBand2 = _T("H:");
	m_szBand3 = _T("S:");

	UpdateData(FALSE);
}

void CImgCombineDlg::OnRgbRadio() 
{
	if(m_nMethod == 1)
		m_nMethod = 0;
	else
		return;

	m_szBand1 = _T("R:");
	m_szBand2 = _T("G:");
	m_szBand3 = _T("B:");

	UpdateData(FALSE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -