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

📄 picviewerdoc.cpp

📁 一个国人自己实现图像库的程序(有参考价值)
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// PicViewerDoc.cpp : implementation of the CPicViewerDoc class
//

#include "stdafx.h"
#include "PicViewer.h"
#include "AdjRGBDlg.h"
#include "AdjHS.h"
#include "AdjBrightDlg.h"
#include "MosaicDlg.h"
#include "SmoothAVG.h"
#include "StripeDlg.h"
#include "MixdibDlg.h"
#include "AdjustFrameDlg.h"
#include "AdjustSizeDlg.h"
#include "RotateDlg.h"
#include "EmbossDlg.h"
#include "WindyDlg.h"
#include "SharpDlg.h"
#include "SelectFileDlg.h"

#include "PicViewerDoc.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPicViewerDoc

IMPLEMENT_DYNCREATE(CPicViewerDoc, CDocument)

BEGIN_MESSAGE_MAP(CPicViewerDoc, CDocument)
	//{{AFX_MSG_MAP(CPicViewerDoc)
	ON_COMMAND(IDMI_EMBOSS, OnEmboss)
	ON_COMMAND(IDMI_NEGTIVE, OnNegtive)
	ON_COMMAND(IDMI_SHARP, OnSharp)
	ON_COMMAND(IDMI_FLIP, OnFlip)
	ON_COMMAND(IDMI_MIRROR, OnMirror)
	ON_COMMAND(IDMI_ROTATE90, OnRotate90)
	ON_COMMAND(IDMI_ROTATE270, OnRotate270)
	ON_COMMAND(IDMI_MOSAIC, OnMosaic)
	ON_COMMAND(IDMI_COUNTCOLOR, OnCountcolor)
	ON_COMMAND(IDMI_ADJUST_RGB, OnAdjustRgb)
	ON_COMMAND(IDMI_ADJUST_BRIGHT, OnAdjustBright)
	ON_COMMAND(IDMI_SMOOTH_AVG, OnSmoothAvg)
	ON_COMMAND(IDMI_ADJUST_HUE, OnAdjustHue)
	ON_COMMAND(IDMI_STRIPE, OnStripe)
	ON_COMMAND(IDMI_MIXDIB, OnMixdib)
	ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
	ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy)
	ON_COMMAND(IDMI_COLUMN, OnColumn)
	ON_COMMAND(IDMI_ERASEFRAME, OnEraseframe)
	ON_COMMAND(IDMI_ADDFRAME, OnAddframe)
	ON_UPDATE_COMMAND_UI(IDMI_ROTATE90, OnUpdateRotate90)
	ON_UPDATE_COMMAND_UI(IDMI_ROTATE270, OnUpdateRotate270)
	ON_UPDATE_COMMAND_UI(IDMI_MIRROR, OnUpdateMirror)
	ON_UPDATE_COMMAND_UI(IDMI_FLIP, OnUpdateFlip)
	ON_UPDATE_COMMAND_UI(IDMI_ADDFRAME, OnUpdateAddframe)
	ON_UPDATE_COMMAND_UI(IDMI_ERASEFRAME, OnUpdateEraseframe)
	ON_COMMAND(IDMI_ADJUST_SIZE, OnAdjustSize)
	ON_UPDATE_COMMAND_UI(IDMI_ADJUST_SIZE, OnUpdateAdjustSize)
	ON_COMMAND(IDMI_ROTATE_ANGLE, OnRotateAngle)
	ON_UPDATE_COMMAND_UI(IDMI_ROTATE_ANGLE, OnUpdateRotateAngle)
	ON_UPDATE_COMMAND_UI(IDMI_ADJUST_RGB, OnUpdateAdjustRgb)
	ON_UPDATE_COMMAND_UI(IDMI_ADJUST_BRIGHT, OnUpdateAdjustBright)
	ON_UPDATE_COMMAND_UI(IDMI_ADJUST_HUE, OnUpdateAdjustHue)
	ON_UPDATE_COMMAND_UI(IDMI_NEGTIVE, OnUpdateNegtive)
	ON_UPDATE_COMMAND_UI(IDMI_EMBOSS, OnUpdateEmboss)
	ON_COMMAND(IDMI_CONVERT_TO32, OnConvertTo32)
	ON_UPDATE_COMMAND_UI(IDMI_CONVERT_TO32, OnUpdateConvertTo32)
	ON_COMMAND(IDMI_WINDY, OnWindy)
	ON_UPDATE_COMMAND_UI(IDMI_WINDY, OnUpdateWindy)
	ON_UPDATE_COMMAND_UI(IDMI_SHARP, OnUpdateSharp)
	ON_UPDATE_COMMAND_UI(IDMI_COLUMN, OnUpdateColumn)
	ON_UPDATE_COMMAND_UI(IDMI_STRIPE, OnUpdateStripe)
	ON_UPDATE_COMMAND_UI(IDMI_SMOOTH_AVG, OnUpdateSmoothAvg)
	ON_COMMAND(IDMI_CONVOL_SHARP1, OnConvolSharp1)
	ON_COMMAND(IDMI_CONVOL_SHARP2, OnConvolSharp2)
	ON_COMMAND(IDMI_CONVOL_SHARP3, OnConvolSharp3)
	ON_COMMAND(IDMI_CONVOL_SMOOTH1, OnConvolSmooth1)
	ON_COMMAND(IDMI_CONVOL_SMOOTH2, OnConvolSmooth2)
	ON_COMMAND(IDMI_CONVOL_SMOOTH3, OnConvolSmooth3)
	ON_UPDATE_COMMAND_UI(IDMI_CONVOL_SHARP1, OnUpdateConvolSharp1)
	ON_UPDATE_COMMAND_UI(IDMI_CONVOL_SHARP2, OnUpdateConvolSharp2)
	ON_UPDATE_COMMAND_UI(IDMI_CONVOL_SHARP3, OnUpdateConvolSharp3)
	ON_UPDATE_COMMAND_UI(IDMI_CONVOL_SMOOTH1, OnUpdateConvolSmooth1)
	ON_UPDATE_COMMAND_UI(IDMI_CONVOL_SMOOTH2, OnUpdateConvolSmooth2)
	ON_UPDATE_COMMAND_UI(IDMI_CONVOL_SMOOTH3, OnUpdateConvolSmooth3)
	ON_COMMAND(IDMI_CONVOL_ENHANCE_H, OnConvolEnhanceH)
	ON_UPDATE_COMMAND_UI(IDMI_CONVOL_ENHANCE_H, OnUpdateConvolEnhanceH)
	ON_COMMAND(IDMI_CONVOL_ENHANCE_V, OnConvolEnhanceV)
	ON_UPDATE_COMMAND_UI(IDMI_CONVOL_ENHANCE_V, OnUpdateConvolEnhanceV)
	ON_COMMAND(IDMI_CONVOL_ENHANCE_LAP1, OnConvolEnhanceLap1)
	ON_UPDATE_COMMAND_UI(IDMI_CONVOL_ENHANCE_LAP1, OnUpdateConvolEnhanceLap1)
	ON_COMMAND(IDMI_CONVOL_ENHANCE_LAP2, OnConvolEnhanceLap2)
	ON_UPDATE_COMMAND_UI(IDMI_CONVOL_ENHANCE_LAP2, OnUpdateConvolEnhanceLap2)
	ON_COMMAND(IDMI_CONVOL_ENHANCE_LAP3, OnConvolEnhanceLap3)
	ON_UPDATE_COMMAND_UI(IDMI_CONVOL_ENHANCE_LAP3, OnUpdateConvolEnhanceLap3)
	ON_COMMAND(IDMI_CONVOL_ENHANCE_LAP4, OnConvolEnhanceLap4)
	ON_UPDATE_COMMAND_UI(IDMI_CONVOL_ENHANCE_LAP4, OnUpdateConvolEnhanceLap4)
	ON_COMMAND(IDMI_CONVOL_ENHANCE_VH, OnConvolEnhanceVh)
	ON_UPDATE_COMMAND_UI(IDMI_CONVOL_ENHANCE_VH, OnUpdateConvolEnhanceVh)
	ON_COMMAND(IDMI_CONVOL_USER, OnConvolUser)
	ON_UPDATE_COMMAND_UI(IDMI_CONVOL_USER, OnUpdateConvolUser)
	ON_UPDATE_COMMAND_UI(IDMI_MOSAIC, OnUpdateMosaic)
	ON_COMMAND(IDMI_EFFECT_UNDO, OnEffectUndo)
	ON_UPDATE_COMMAND_UI(IDMI_EFFECT_UNDO, OnUpdateEffectUndo)
	ON_COMMAND(IDMI_EFFECT_REDO, OnEffectRedo)
	ON_UPDATE_COMMAND_UI(IDMI_EFFECT_REDO, OnUpdateEffectRedo)
	ON_UPDATE_COMMAND_UI(IDMI_COUNTCOLOR, OnUpdateCountcolor)
	ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
	ON_COMMAND(IDMI_CONVERT_GRAY, OnConvertGray)
	ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)
	ON_COMMAND(IDMI_SPHERE, OnSphere)
	ON_UPDATE_COMMAND_UI(IDMI_SPHERE, OnUpdateSphere)
	ON_UPDATE_COMMAND_UI(IDMI_PICKKEYCOLOR, OnUpdatePickkeycolor)
	ON_COMMAND(IDMI_PICKKEYCOLOR, OnPickkeycolor)
	ON_COMMAND(IDMI_CONVERT_TO24, OnConvertTo24)
	ON_UPDATE_COMMAND_UI(IDMI_CONVERT_TO24, OnUpdateConvertTo24)
	ON_UPDATE_COMMAND_UI(IDMI_CONVERT_GRAY, OnUpdateConvertGray)
	ON_COMMAND(IDMI_SPLITE_CHANNEL, OnSpliteChannel)
	ON_UPDATE_COMMAND_UI(IDMI_SPLITE_CHANNEL, OnUpdateSpliteChannel)
	ON_COMMAND(IDMI_VIEW_REALSIZE, OnViewRealsize)
	ON_UPDATE_COMMAND_UI(IDMI_VIEW_REALSIZE, OnUpdateViewRealsize)
	ON_COMMAND(IDMI_CONVERT_TO16, OnConvertTo16)
	ON_UPDATE_COMMAND_UI(IDMI_CONVERT_TO16, OnUpdateConvertTo16)
	ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
	ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste)
	ON_COMMAND(IDMI_SELECT_ALL, OnSelectAll)
	ON_UPDATE_COMMAND_UI(IDMI_SELECT_ALL, OnUpdateSelectAll)
	ON_COMMAND(ID_EDIT_CUT, OnEditCut)
	ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEditCut)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPicViewerDoc construction/destruction

CPicViewerDoc::CPicViewerDoc()
{ m_bFirstShow = TRUE ; }
CPicViewerDoc::~CPicViewerDoc()
{ }

/////////////////////////////////////////////////////////////////////////////
// CPicViewerDoc serialization

void CPicViewerDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
}

/////////////////////////////////////////////////////////////////////////////
// CPicViewerDoc diagnostics

#ifdef _DEBUG
void CPicViewerDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CPicViewerDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CPicViewerDoc commands

void CPicViewerDoc::OnEmboss() 
{
	// TODO: Add your command handler code here
	CEmbossDlg		dlg (NULL, &this->m_fPic) ;
	dlg.DoModal () ;
	this->AttachPic () ;
}

void CPicViewerDoc::OnNegtive() 
{
	// TODO: Add your command handler code here
	m_fPic.Negate () ;
	this->AttachPic () ;
}

void CPicViewerDoc::AttachPic()
{
	m_DDB.Attach (m_fPic.GetDDB_Handle ()) ;
	this->UpdateAllViews (NULL) ;
}

void CPicViewerDoc::OnSharp() 
{
	// TODO: Add your command handler code here
	CSharpDlg		dlg (NULL, &m_fPic) ;
	if (dlg.DoModal () == IDOK)
		this->AttachPic () ;
}

void CPicViewerDoc::OnFlip() 
{
	// TODO: Add your command handler code here
	if (m_fPic.GetHandle())
	{
		m_fPic.Flip () ;
		this->AttachPic () ;
	}
}

void CPicViewerDoc::OnMirror() 
{
	// TODO: Add your command handler code here
	if (m_fPic.GetHandle())
	{
		m_fPic.Mirror () ;
		this->AttachPic () ;
	}
}

void CPicViewerDoc::OnRotate90() 
{
	// TODO: Add your command handler code here
	if (m_fPic.GetHandle())
	{
		m_fPic.Rotate90 () ;
		this->AttachPic () ;
	}
}

void CPicViewerDoc::OnRotate270() 
{
	// TODO: Add your command handler code here
	if (m_fPic.GetHandle())
	{
		m_fPic.Rotate270 () ;
		this->AttachPic () ;
	}
}

void CPicViewerDoc::OnMosaic() 
{
	// TODO: Add your command handler code here
	CMosaicDlg		dlg (NULL, &m_fPic) ;
	if (dlg.DoModal () == IDOK)
		this->AttachPic () ;
}

void CPicViewerDoc::OnCountcolor() 
{
	// TODO: Add your command handler code here
	TCHAR	Buffer[32] ;
	::wsprintf (Buffer, "使用颜色数目为 : %i", this->m_fPic.ColorsUsed ()) ;
	::fooMsgBox (Buffer) ;
}

void CPicViewerDoc::OnAdjustRgb() 
{
	// TODO: Add your command handler code here
	if (m_fPic.GetHandle())
	{
		CAdjRGBDlg		DibRGB (NULL, &this->m_fPic) ;
		DibRGB.DoModal () ;
		this->AttachPic () ;
	}
}

void CPicViewerDoc::OnAdjustBright() 
{
	// TODO: Add your command handler code here
	if (m_fPic.GetHandle())
	{
		CAdjBrightDlg		DibBri (NULL, &this->m_fPic) ;
		DibBri.DoModal () ;
		this->AttachPic () ;
	}
}

void CPicViewerDoc::OnSmoothAvg() 
{
	// TODO: Add your command handler code here
	CSmoothAVG		dlg (NULL, &this->m_fPic) ;
	if (dlg.DoModal () == IDOK)
		this->AttachPic () ;
}

void CPicViewerDoc::OnAdjustHue() 
{
	// TODO: Add your command handler code here
	if (m_fPic.GetHandle())
	{
		CAdjHSDlg		DibBri (NULL, &this->m_fPic) ;
		DibBri.DoModal () ;
		this->AttachPic () ;
	}
}

void CPicViewerDoc::OnStripe() 
{
	// TODO: Add your command handler code here
	CStripeDlg		Dib (NULL, &this->m_fPic) ;
	if (Dib.DoModal () == IDOK)
		this->AttachPic () ;
}

void CPicViewerDoc::OnMixdib() 
{
	// TODO: Add your command handler code here
	CMixdibDlg		Dib (NULL, &this->m_fPic) ;
	Dib.DoModal () ;
	this->AttachPic () ;
}

void CPicViewerDoc::OnEditCopy() 
{
	if (m_fPic.HasSelection ())
	{
		RECT	box ;
		m_fPic.GetBoundBox (&box) ;
		m_fPic.CopyToClipboard (&box) ;
	}
	else
		m_fPic.CopyToClipboard (NULL) ;
}
void CPicViewerDoc::OnUpdateEditCopy(CCmdUI* pCmdUI) 
{ pCmdUI->Enable (m_fPic.GetHandle () != NULL) ; }

void CPicViewerDoc::OnColumn() 
{
	// TODO: Add your command handler code here
	m_fPic.Column () ;
	this->AttachPic () ;
}
//=========================================================================
void CPicViewerDoc::OnEraseframe() 
{
	RECT	rc ;
	CAdjustFrameDlg		dlg (NULL, &rc) ;
	if (dlg.DoModal () == IDOK)
		m_fPic.EraseFrame (rc.left, rc.top, rc.right, rc.bottom) ;
	this->AttachPic () ;
}
void CPicViewerDoc::OnAddframe() 
{
	RECT	rc ;
	CAdjustFrameDlg		dlg (NULL, &rc) ;
	if (dlg.DoModal () == IDOK)
		m_fPic.AddFrame (rc.left, rc.top, rc.right, rc.bottom) ;
	this->AttachPic () ;
}
//=========================================================================
void CPicViewerDoc::OnUpdateRotate90(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable (m_fPic.ColorBits() >= 8) ;
}

void CPicViewerDoc::OnUpdateRotate270(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable (m_fPic.ColorBits() >= 8) ;
}

void CPicViewerDoc::OnUpdateMirror(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable (m_fPic.ColorBits() >= 8) ;
}

void CPicViewerDoc::OnUpdateFlip(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable (m_fPic.GetHandle () != NULL) ;
}

void CPicViewerDoc::OnUpdateAddframe(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable (m_fPic.ColorBits() >= 8) ;
}

void CPicViewerDoc::OnUpdateEraseframe(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable (m_fPic.ColorBits() >= 8) ;
}

void CPicViewerDoc::OnAdjustSize() 
{
	// TODO: Add your command handler code here
	CAdjustSizeDlg		dlg (NULL, &m_fPic) ;
	dlg.DoModal () ;
	this->AttachPic () ;
}

void CPicViewerDoc::OnUpdateAdjustSize(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable (m_fPic.GetHandle () != NULL) ;
}

void CPicViewerDoc::OnRotateAngle() 
{
	// TODO: Add your command handler code here
	CRotateDlg		dlg (NULL, &m_fPic) ;
	dlg.DoModal () ;
	this->AttachPic () ;
}

void CPicViewerDoc::OnUpdateRotateAngle(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable (m_fPic.GetHandle() != NULL) ;
}

void CPicViewerDoc::OnUpdateAdjustRgb(CCmdUI* pCmdUI) 
{ pCmdUI->Enable ((m_fPic.ColorBits() != 16) && (m_fPic.ColorBits() > 0)) ; }
void CPicViewerDoc::OnUpdateAdjustBright(CCmdUI* pCmdUI) 
{ pCmdUI->Enable ((m_fPic.ColorBits() != 16) && (m_fPic.ColorBits() > 0)) ; }

void CPicViewerDoc::OnUpdateAdjustHue(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable ((m_fPic.ColorBits() != 16) && (m_fPic.ColorBits() > 0)) ;
}

void CPicViewerDoc::OnUpdateNegtive(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable ((m_fPic.ColorBits() != 16) && (m_fPic.ColorBits() > 0)) ;
}

void CPicViewerDoc::OnUpdateEmboss(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable (m_fPic.ColorBits() >= 24) ;
}

void CPicViewerDoc::OnWindy() 
{
	// TODO: Add your command handler code here
	CWindyDlg		Dib (NULL, &this->m_fPic) ;
	Dib.DoModal () ;
	this->AttachPic () ;
}

void CPicViewerDoc::OnUpdateWindy(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable ((m_fPic.GetHandle() != NULL) && (m_fPic.ColorBits() >= 24)) ;
}

void CPicViewerDoc::OnUpdateSharp(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable ((m_fPic.GetHandle() != NULL) && (m_fPic.ColorBits() >= 24)) ;
}

⌨️ 快捷键说明

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