www.pudn.com > yuzhishuanfa.zip > ImageView.h


#if !defined(AFX_IMAGEVIEW_H__EC968786_95AB_11D2_85D5_FFC7E2870069__INCLUDED_) 
#define AFX_IMAGEVIEW_H__EC968786_95AB_11D2_85D5_FFC7E2870069__INCLUDED_ 
 
#if _MSC_VER >= 1000 
#pragma once 
#endif // _MSC_VER >= 1000 
// ImageView.h : header file 
// 
 
#include "dibapi.h" 
///////////////////////////////////////////////////////////////////////////// 
// CImageViewA form view 
 
 
#ifndef __AFXEXT_H__ 
#include  
#endif 
 
/*处理函数写法: 
void CUserView::OnProcessing() 
{ 
	// TODO: Add your command handler code here 
	CUserDoc* pDoc = GetDocument(); 
	ASSERT_VALID(pDoc); 
	 
	if(pDoc->IsGray())		BeginProcessingGray(); 
	else             	    BeginProcessingColor();  
 
    DWORD w=m_entryImage.sizeImage.cx,h=m_entryImage.sizeImage.cy; 
	CProgressDlg dlg(0,m_entryImage.rectImage.Width(),1); 
	 
	for(int i=m_entryImage.rectImage.left;iIsGray()) 
				{ 
					if(m_Region.PtInRegion(i,j)) 
						灰度点处理(); 
				} 
				else 
				{ 
					彩色点处理(); 
				} 
			} 
			dlg.StepIt(); 
		} 
	if(pDoc->IsGray())		EndProcessingGray(); 
	else				    EndProcessingColor();  
} 
*/ 
 
typedef struct tagImageEntry{ 
	HDIB	hDIB;			//源位图句柄 
	HDIB	hNewDIB;		//生成目标位图句柄 
	BYTE FAR * pImage;		//源位图数据开始位(用于灰度图) 
	BYTE FAR * pNewImage;	//目标位图数据开始位(用于灰度图) 
	HBITMAP hBitmap;		//源临时中间设备相关位图句柄 
	HBITMAP hNewBitmap;		//目标临时中间设备相关位图句柄 
	HDC		hMemDC;			//源位图设备 
	HDC		hNewDC;			//目标位图设备 
	CRect   rectImage;		//包围选中区域的最小矩形 
	CSize   sizeImage;		//图象大小 
 
}ImageEntry, far *LPImageEntry;  //图象入口,处理图象所须的句柄和指针 
 
 
class CImageDocA; 
class CImageViewA : public CScrollView 
{ 
protected: 
	CImageViewA();           // protected constructor used by dynamic creation 
	DECLARE_DYNCREATE(CImageViewA) 
 
	void UpdateDocument(HDIB hNewDIB); 
	void ReplaceHandleForUndo(HGLOBAL h); 
	void ReplaceHandleForRedo(HGLOBAL h); 
	HGLOBAL m_HandleForUndo; 
	HGLOBAL m_HandleForRedo; 
 
// Attributes 
protected: 
	UINT		 m_nZoomFactor;           //缩放因子 
//	UINT		 m_nMouseFunction;  //鼠标功能 
 
// Operations 
public: 
	BOOL EndUseColor(); 
	BOOL EndUseGray(); 
	BOOL BeginUseColor(); 
	BOOL BeginUseGray(); 
	CImageDocA* GetDocument(); 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CImageViewA) 
	public: 
	protected: 
	virtual void OnInitialUpdate(); // called first time after construct 
	virtual void OnDraw(CDC* pDC); 
	virtual BOOL OnPreparePrinting(CPrintInfo* pInfo); 
	virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo); 
	virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo); 
	virtual void OnPrint(CDC* pDC, CPrintInfo*  pInfo); 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
	void BackUp(); 
	BYTE * m_pInitImage;//备份的原始图像 
	void BackUpRecoImage(); 
    BYTE * m_pRecoImage;//备份的重建图像 
	 
	int m_t1,m_t2;//三值化时的俩门限 
	double uOpt[3];//最佳阈值时的分段均值 
 
	//1999-03-13,鲍捷,取像素 
	COLORREF GetOldPixel(int x, int y) 
	{	return ::GetPixel(m_entryImage.hMemDC,x,y);} 
	//1999-03-13,鲍捷,取灰度像素 
	BYTE GetGrayOldPixel(int x, int y) 
	{	return ::GetGrayPixel(m_entryImage.pImage,x,y,	m_entryImage.sizeImage.cx,m_entryImage.sizeImage.cy);	} 
	//1999-03-13,鲍捷,置像素 
	void SetPixel(int x, int y, COLORREF color) 
	{	SetPixelV(m_entryImage.hNewDC, x , y , color);} 
	//1999-03-13,鲍捷,置灰度像素 
	void SetGrayPixel(int x, int y, BYTE color) 
	{	::SetGrayPixel(m_entryImage.pNewImage,x,y,	m_entryImage.sizeImage.cx,m_entryImage.sizeImage.cy,color);	} 
 
	ImageEntry m_entryImage; 
protected: 
	virtual ~CImageViewA(); 
#ifdef _DEBUG 
	virtual void AssertValid() const; 
	virtual void Dump(CDumpContext& dc) const; 
#endif 
	BOOL BeginProcessing(); 
	BOOL EndProcessing(); 
	BOOL BeginProcessingGray(); 
	BOOL EndProcessingGray(); 
	BOOL BeginProcessingColor(); 
	BOOL EndProcessingColor(); 
 
	// Generated message map functions 
	//{{AFX_MSG(CImageViewA) 
	afx_msg void OnEditClear(); 
	afx_msg void OnUpdateEditClear(CCmdUI* pCmdUI); 
	afx_msg void OnEditCopy(); 
	afx_msg void OnUpdateEditCopy(CCmdUI* pCmdUI); 
	afx_msg void OnEditCut(); 
	afx_msg void OnUpdateEditCut(CCmdUI* pCmdUI); 
	afx_msg void OnEditPaste(); 
	afx_msg void OnUpdateEditPaste(CCmdUI* pCmdUI); 
	afx_msg void OnEditRedo(); 
	afx_msg void OnUpdateEditRedo(CCmdUI* pCmdUI); 
	afx_msg void OnEditUndo(); 
	afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI); 
	afx_msg void OnColorNegative(); 
	afx_msg void OnUpdateColorNegative(CCmdUI* pCmdUI); 
	afx_msg void OnMenuitemPENGZHANG(); 
	afx_msg void OnMenuitemFUSHI(); 
	afx_msg void OnMenuitemSUB(); 
	afx_msg void OnMenuitemTHILEV(); 
	afx_msg void OnMenuitembilevel(); 
	afx_msg void OnMenuitemtwol(); 
	afx_msg void OnConcave(); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
private: 
	int ConcavityAnalysisSel(); 
 
}; 
 
#ifndef _DEBUG  // debug version in ImageView.cpp 
inline CImageDocA* CImageViewA::GetDocument() 
   { return (CImageDocA*)m_pDocument; } 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Developer Studio will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_IMAGEVIEW_H__EC968786_95AB_11D2_85D5_FFC7E2870069__INCLUDED_)