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;
}
}