www.pudn.com > 图像处理源代码.rar > Task3.cpp


// Task3.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "tuxiang.h" 
#include "Task3.h" 
#include "image.h" 
#include "imgview.h" 
#include "hview.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
extern MYIMAGE *pImage; 
extern CImgView *m_ImgView; 
CHView *m_HView; 
 
///////////////////////////////////////////////////////////////////////////// 
// CTask3 property page 
 
IMPLEMENT_DYNCREATE(CTask3, CPropertyPage) 
 
CTask3::CTask3() : CPropertyPage(CTask3::IDD) 
{ 
	//{{AFX_DATA_INIT(CTask3) 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
} 
 
CTask3::~CTask3() 
{ 
} 
 
void CTask3::DoDataExchange(CDataExchange* pDX) 
{ 
	CPropertyPage::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CTask3) 
		// NOTE: the ClassWizard will add DDX and DDV calls here 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CTask3, CPropertyPage) 
	//{{AFX_MSG_MAP(CTask3) 
	ON_BN_CLICKED(IDOPEN, OnOpen) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CTask3 message handlers 
 
void CTask3::OnOpen()  
{ 
	if(m_ImgView!=NULL) m_ImgView->ShowWindow (SW_HIDE); 
	if(pImage!=NULL) 
		delete pImage; 
 
	// TODO: Add your control notification handler code here 
	static char BASED_CODE szFilter[] = "图象文件 (*.bmp)|*.bmp"; 
	CString sFileName; 
	int H[256];	//直方图灰度数组 
 
	//显示一个Open File Dialog 
	CFileDialog	opendlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter,NULL); 
	int choice=opendlg.DoModal(); 
	if(choice!=IDOK) 
		return; 
 
	//读取文件名 
	sFileName=opendlg.GetPathName(); 
	if(opendlg.GetFileExt()=="bmp") 
		pImage=ReadBmp(sFileName,this->m_hWnd); 
	if(m_ImgView==NULL) m_ImgView=new CImgView(pImage,this); 
	m_ImgView->ShowWindow (SW_SHOWNORMAL); 
	m_ImgView->DisplayImage(); 
 
	for(int x=0;x<256;x++) 
		H[x]=0; 
	for(x=0;xHeight * pImage->Width ;x++) 
		H[pImage->ImgData[x]]++; 
	if(m_HView==NULL) 		m_HView=new CHView(H,this); 
	m_HView->ShowWindow(SW_SHOWNORMAL); 
	m_HView->DisplayHistogram(); 
} 
 
 
void CTask3::OnCancel()  
{ 
	// TODO: Add extra cleanup here 
 
	if(m_ImgView!=NULL) 
	{ 
		m_ImgView->EndDialog(IDOK); 
		m_ImgView=NULL; 
	} 
	if(m_HView!=NULL) 
	{ 
		m_HView->EndDialog(IDOK); 
		m_HView=NULL; 
	} 
	if(pImage!=NULL) 
	{ 
		delete pImage; 
		pImage=NULL; 
	} 
}