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;i IsGray()) { 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_)