CImageInitiate 类:用于遥感图像初始化的 MFC 对话框类

该类是一个 MFC 对话框类,用于初始化遥感图像,包括设置图像格式、选择传感器类型、设置图像大小等。该类包含了一些按钮和菜单,允许用户选择不同的图像参数。

构造函数:

CImageInitiate::CImageInitiate(CWnd* pParent /*=NULL*/) 
	: CDialog(CImageInitiate::IDD, pParent) 
{
	m_bhTM4 = FALSE;
	m_bhTM5= FALSE;
	m_bhTM7= FALSE;
	m_bhMODIS= FALSE;
	m_bhSPOT1= FALSE;
	m_bhSPOT4= FALSE;
	m_bhMSS4= FALSE;
	m_bhMSS5= FALSE;
	//{{AFX_DATA_INIT(CImageInitiate)
	m_samples = 0;
	m_lines = 0;
	m_bands = 0;
	//}}AFX_DATA_INIT
	m_classnum = 0;
	ColorChange[0]=RGB(0,0,0);
	ColorChange[1]=RGB(255,0,0);      ColorChange[2]=RGB(0,255,0);      ColorChange[3]=RGB(0,0,255); 
	ColorChange[4]=RGB(245,245,220);  ColorChange[5]=RGB(0,128,128);    ColorChange[6]=RGB(255,255,0);
	ColorChange[7]=RGB(128,0,128);    ColorChange[8]=RGB(240,128,128);  ColorChange[9]=RGB(153,50,204);
	ColorChange[10]=RGB(255,165,0);   ColorChange[11]=RGB(184,134,11);  ColorChange[12]=RGB(255,69,0);
	ColorChange[13]=RGB(128,128,0);   ColorChange[14]=RGB(250,240,230); ColorChange[15]=RGB(218,165,32); 
	ColorChange[16]=RGB(128,128,128); ColorChange[17]=RGB(255,228,196); ColorChange[18]=RGB(173,216,230);
	ColorChange[19]=RGB(25,25,112);   ColorChange[20]=RGB(255,0,255);   ColorChange[21]=RGB(0,255,255);    
	ColorChange[22]=RGB(225,235,205); ColorChange[23]=RGB(0,255,127);   ColorChange[24]=RGB(255,99,71); 
	ColorChange[25]=RGB(250,240,230); ColorChange[26]=RGB(255,0,255);   ColorChange[27]=RGB(102,205,170); 
	ColorChange[28]=RGB(218,112,214); ColorChange[29]=RGB(238,230,170); ColorChange[30]=RGB(255,239,213); 
	ColorChange[31]=RGB(245,223,179); ColorChange[32]=RGB(255,255,255); ColorChange[33]=RGB(255,248,220); 
	ColorChange[34]=RGB(70,130,180);  ColorChange[35]=RGB(210,180,140); ColorChange[36]=RGB(64,224,208); 
	ColorChange[37]=RGB(240,255,240); ColorChange[38]=RGB(178,34,34);   ColorChange[39]=RGB(255,218,185);
}

数据交换函数:

void CImageInitiate::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CImageInitiate)
	DDX_Text(pDX, IDC_EDIT1, m_samples);
	DDX_Text(pDX, IDC_EDIT2, m_lines);
	DDX_Text(pDX, IDC_EDIT3, m_bands);
	//}}AFX_DATA_MAP
}

消息映射函数:

BEGIN_MESSAGE_MAP(CImageInitiate, CDialog)
	//{{AFX_MSG_MAP(CImageInitiate)
	ON_BN_CLICKED(IDC_CLASSIFICATION_IMAGE, OnClassificationImage)
	ON_BN_CLICKED(IDC_HEADER_SENSOR, OnHeaderSensor)
	ON_COMMAND(ID_SENSOR_LANDSAT_MSS4, OnSensorLandsatMss4)
	ON_COMMAND(ID_SENSOR_LANDSAT_MSS5, OnSensorLandsatMss5)
	ON_COMMAND(ID_SENSOR_LANDSAT_TM4, OnSensorLandsatTm4)
	ON_COMMAND(ID_SENSOR_LANDSAT_TM5, OnSensorLandsatTm5)
	ON_COMMAND(ID_SENSOR_LANDSAT_TM7, OnSensorLandsatTm7)
	ON_COMMAND(ID_SENSOR_MODIS, OnSensorModis)
	ON_COMMAND(ID_SENSOR_SPOT1, OnSensorSpot1)
	ON_COMMAND(ID_SENSOR_SPOT4, OnSensorSpot4)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

初始化函数:

BOOL CImageInitiate::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	CheckRadioButton(IDC_BYTE,IDC_INT,IDC_BYTE);
	CheckRadioButton(IDC_STANDARD_IMAGE,IDC_TRACE_IMAGE,IDC_STANDARD_IMAGE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

确认按钮响应函数:

void CImageInitiate::OnOK() 
{
	// TODO: Add extra validation here
	DataResult=GetCheckedRadioButton(IDC_BYTE,IDC_INT);
	FileResult=GetCheckedRadioButton(IDC_STANDARD_IMAGE,IDC_TRACE_IMAGE);
    CDialog::OnOK();
}

传感器菜单响应函数:

void CImageInitiate::OnHeaderSensor() 
{
	CWnd * pClientWnd=GetDlgItem(IDC_HEADER_SENSOR);
	
	CRect rcDest,rcClip;
	pClientWnd->GetClientRect(&rcDest);
	pClientWnd->GetWindowRect(&rcClip);
	
	
	CPoint point;
	point = rcClip.CenterPoint();

	CMenu myPopupMenu;

	myPopupMenu.LoadMenu(IDR_SENSOR);
	CMenu *pPopup =  myPopupMenu.GetSubMenu(0);
	pPopup->TrackPopupMenu(TPM_CENTERALIGN,
			point.x ,//- 95,
			point.y ,//- 150,
			this);		
}

其他响应函数:

void CImageInitiate::OnSensorLandsatMss4() 
{
	GetDlgItem(IDC_HEADER_SENSOR)->SetWindowText("Landsat MSS4");
	m_bhMSS4 = TRUE;
	
}

void CImageInitiate::OnSensorLandsatMss5() 
{
	GetDlgItem(IDC_HEADER_SENSOR)->SetWindowText("Landsat MSS5");
	m_bhMSS5 = TRUE;
}

void CImageInitiate::OnSensorLandsatTm4() 
{
	GetDlgItem(IDC_HEADER_SENSOR)->SetWindowText("Landsat TM4");
	m_bhTM4 = TRUE;
}

void CImageInitiate::OnSensorLandsatTm5() 
{
	GetDlgItem(IDC_HEADER_SENSOR)->SetWindowText("Landsat TM5");
	m_bhTM5 = TRUE;
	
}

void CImageInitiate::OnSensorLandsatTm7() 
{
	GetDlgItem(IDC_HEADER_SENSOR)->SetWindowText("Landsat TM7");
	m_bhTM7 = TRUE;
	
}

void CImageInitiate::OnSensorModis() 
{
	GetDlgItem(IDC_HEADER_SENSOR)->SetWindowText("MODIS");
	m_bhMODIS = TRUE;
	
}

void CImageInitiate::OnSensorSpot1() 
{
	GetDlgItem(IDC_HEADER_SENSOR)->SetWindowText("SPOT1");
	m_bhSPOT1 = TRUE;
}

void CImageInitiate::OnSensorSpot4() 
{
	GetDlgItem(IDC_HEADER_SENSOR)->SetWindowText("SPOT4");
	m_bhSPOT4 = TRUE;
}

总结:

该类提供了初始化遥感图像所需的基本功能,包括选择图像格式、传感器类型和设置图像大小等。通过该类的使用,可以方便地创建和管理遥感图像。

注意:

  • 该代码需要在 Visual Studio 等 IDE 中进行编译。
  • 该代码需要包含相应的头文件和库文件。
  • 该代码仅供参考,具体实现可能需要根据实际情况进行调整。
CImageInitiate 类:用于遥感图像初始化的 MFC 对话框类

原文地址: https://www.cveoy.top/t/topic/jnwn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录