Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
ShowDIBView.cpp
Package: dip.rar [view]
Upload User: hongxinly
Upload Date: 2022-06-13
Package Size: 2588k
Code Size: 10k
Category:
Special Effects
Development Platform:
Visual C++
- // ShowDIBView.cpp : implementation of the CShowDIBView class
- //
- #include "stdafx.h"
- #include "ShowDIB.h"
- #include "DIB.h"
- #include "ShowDIBDoc.h"
- #include "ShowDIBView.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CShowDIBView
- IMPLEMENT_DYNCREATE(CShowDIBView, CView)
- BEGIN_MESSAGE_MAP(CShowDIBView, CView)
- //{{AFX_MSG_MAP(CShowDIBView)
- ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
- ON_COMMAND(ID_STYLE_STRETCHED, OnStyleStretched)
- ON_COMMAND(ID_STYLE_NORMAL, OnStyleNormal)
- ON_COMMAND(ID_FILE_SAVE, OnFileSave)
- ON_COMMAND(ID_PROCESS_2value, OnPROCESS2value)
- ON_COMMAND(ID_Invert, OnInvert)
- ON_COMMAND(ID_VMax, OnVMax)
- ON_COMMAND(ID_VMin, OnVMin)
- ON_COMMAND(ID_VAve, OnVAve)
- ON_COMMAND(ID_REVERSE, OnReverse)
- ON_COMMAND(ID_POINT_LINER, OnPointLiner)
- ON_COMMAND(ID_HISTOGRAM, OnHistogram)
- ON_COMMAND(ID_HIST_EQUA, OnHistEqua)
- ON_COMMAND(ID_GEOM_TRAN, OnGeomTran)
- ON_COMMAND(ID_GEOM_ZOOM, OnGeomZoom)
- ON_COMMAND(ID_GEOM_ROTA, OnGeomRota)
- ON_COMMAND(ID_FFT, OnFft)
- ON_COMMAND(ID_DCT, OnDct)
- ON_COMMAND(ID_FREQ_WALH, OnFreqWalh)
- ON_COMMAND(ID_FREQ_WAVE, OnFreqWave)
- ON_COMMAND(ID_ENHA_AverF, OnENHAAverF)
- ON_COMMAND(ID_ENHA_MidianF, OnENHAMidianF)
- ON_COMMAND(ID_ENHA_SOBEL, OnEnhaSobel)
- ON_COMMAND(ID_ENHA_LAPLACE, OnEnhaLaplace)
- ON_COMMAND(ID_RESTORE_RANDOMNOISE, OnRestoreRandomnoise)
- ON_COMMAND(ID_RESTORE_SALTNOISE, OnRestoreSaltnoise)
- ON_COMMAND(ID_RESTORE_INVERSE, OnRestoreInverse)
- ON_COMMAND(ID_RESTORE_WIENER, OnRestoreWiener)
- ON_COMMAND(ID_RECON, OnRecon)
- ON_COMMAND(ID_HUFFMAN, OnHuffman)
- ON_COMMAND(ID_RUNLENGTH, OnRunlength)
- ON_COMMAND(ID_ALGORITH, OnAlgorith)
- ON_COMMAND(ID_LZW, OnLzw)
- ON_COMMAND(ID_JPEG, OnJpeg)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CShowDIBView construction/destruction
- CShowDIBView::CShowDIBView()
- {
- ImageStyle = 0;
- }
- CShowDIBView::~CShowDIBView()
- {
- }
- BOOL CShowDIBView::PreCreateWindow(CREATESTRUCT& cs)
- {
- return CView::PreCreateWindow(cs);
- }
- /////////////////////////////////////////////////////////////////////////////
- // CShowDIBView drawing
- void CShowDIBView::OnDraw(CDC* pDC)
- {
- CShowDIBDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- RECT Rect;
- GetClientRect( &Rect );
- m_Dib.SetPalette( pDC );
- m_Dib.Draw( pDC, 0, 0, Rect.right, Rect.bottom, ImageStyle );
- }
- /////////////////////////////////////////////////////////////////////////////
- // CShowDIBView diagnostics
- #ifdef _DEBUG
- void CShowDIBView::AssertValid() const
- {
- CView::AssertValid();
- }
- void CShowDIBView::Dump(CDumpContext& dc) const
- {
- CView::Dump(dc);
- }
- CShowDIBDoc* CShowDIBView::GetDocument()
- // non-debug version is inline
- {
- ASSERT(
- m_pDocument->IsKindOf(RUNTIME_CLASS(CShowDIBDoc)));
- return (CShowDIBDoc*)m_pDocument;
- }
- #endif //_DEBUG
- /////////////////////////////////////////////////////////////////////////////
- // CShowDIBView message handlers
- void CShowDIBView::OnFileOpen()
- {
- static char szFilter[] = "BMP Files(*.BMP)|*.BMP|All Files(*.*)|*.*||";
- CFileDialog FileDlg( TRUE, NULL, NULL,
- OFN_HIDEREADONLY, szFilter );
- if( FileDlg.DoModal() == IDOK &&
- m_Dib.Load( FileDlg.GetPathName() ) ){
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- }
- void CShowDIBView::OnStyleStretched()
- {
- // TODO: Add your command handler code here
- ImageStyle = 1;
- CMenu *pMnu = AfxGetMainWnd()->GetMenu( );
- pMnu->CheckMenuItem(ID_STYLE_STRETCHED,MF_CHECKED);
- pMnu->CheckMenuItem(ID_STYLE_NORMAL,MF_UNCHECKED);
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- void CShowDIBView::OnStyleNormal()
- {
- // TODO: Add your command handler code here
- ImageStyle = 0;
- CMenu *pMnu = AfxGetMainWnd()->GetMenu( );
- pMnu->CheckMenuItem(ID_STYLE_STRETCHED,MF_UNCHECKED);
- pMnu->CheckMenuItem(ID_STYLE_NORMAL,MF_CHECKED);
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- void CShowDIBView::OnFileSave()
- {
- // TODO: Add your command handler code here
- static char szFilter[] = "BMP Files(*.BMP)|*.BMP|All Files(*.*)|*.*||";
- CFileDialog FileDlg( FALSE, "bmp", NULL,
- OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, szFilter );
- if( FileDlg.DoModal() == IDOK &&
- m_Dib.Save( FileDlg.GetPathName() ) ){
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- }
- //////调用2值化处理函数//////////
- void CShowDIBView::OnPROCESS2value()
- {
- // TODO: Add your command handler code here
- if (m_Dib.ConvertToTwoValue())
- {
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- }
- /////////调用彩色图像向灰度图像转化的函数/////////
- void CShowDIBView::OnInvert()
- {
- // TODO: Add your command handler code here
- m_Dib.RGB2GRAY();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- ///////求图像最大像素值/////////////
- void CShowDIBView::OnVMax()
- {
- // TODO: Add your command handler code here
- int MaxValue = m_Dib.GetMax();
- CString max;
- max.Format("%d",MaxValue);
- AfxMessageBox(max);
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- ///////求图像最小像素值/////////////
- void CShowDIBView::OnVMin()
- {
- // TODO: Add your command handler code here
- int MinValue = m_Dib.GetMin();
- CString min;
- min.Format("%d",MinValue);
- AfxMessageBox(min);
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- ///////求图像的像素平均值/////////////
- void CShowDIBView::OnVAve()
- {
- // TODO: Add your command handler code here
- float AveValue = m_Dib.GetAve();
- CString ave;
- ave.Format("%f",AveValue);
- AfxMessageBox(ave);
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- //////图像反转/////
- void CShowDIBView::OnReverse()
- {
- // TODO: Add your command handler code here
- m_Dib.Reverse();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- //////线性变换//////
- void CShowDIBView::OnPointLiner()
- {
- // TODO: Add your command handler code here
- m_Dib.Pointlinear();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- //////统计直方图//////
- void CShowDIBView::OnHistogram()
- {
- // TODO: Add your command handler code here
- m_Dib.Histogram();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- /////////直方图均衡/////////
- void CShowDIBView::OnHistEqua()
- {
- // TODO: Add your command handler code here
- m_Dib.HistEqua();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- ////////平移变换////////
- void CShowDIBView::OnGeomTran()
- {
- // TODO: Add your command handler code here
- m_Dib.GeomTrans();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- ////////缩放变换////////
- void CShowDIBView::OnGeomZoom()
- {
- // TODO: Add your command handler code here
- m_Dib.GeomZoom();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- ////////旋转变换////////
- void CShowDIBView::OnGeomRota()
- {
- // TODO: Add your command handler code here
- int *q=m_Dib.GeomRota();
- int w=q[0],h=q[1];
- CDC *pDC = GetWindowDC();
- HDC hDC = pDC->GetSafeHdc();
- COLORREF crColor;
- int x,y;
- for (x=0;x<w;++x)
- {
- for (y=0;y<h;++y)
- {
- crColor=RGB(q[y*w+x+2],q[y*w+x+2],q[y*w+x+2]);
- SetPixel(hDC,x,y,crColor);
- }
- }
- UpdateWindow();
- }
- /////////FFT/////////
- void CShowDIBView::OnFft()
- {
- // TODO: Add your command handler code here
- m_Dib.FFT();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- ///////DCT/////////
- void CShowDIBView::OnDct()
- {
- // TODO: Add your command handler code here
- m_Dib.DCT();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- ////////沃尔什变换////////
- void CShowDIBView::OnFreqWalh()
- {
- // TODO: Add your command handler code here
- m_Dib.Walsh();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- ////////小波变换/////////
- void CShowDIBView::OnFreqWave()
- {
- // TODO: Add your command handler code here
- m_Dib.Wavelet();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- ////////均值滤波/////////
- void CShowDIBView::OnENHAAverF()
- {
- // TODO: Add your command handler code here
- m_Dib.EnhaAverF();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- ////////中值滤波/////////
- void CShowDIBView::OnENHAMidianF()
- {
- // TODO: Add your command handler code here
- m_Dib.EnhaMidianF();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- /////////Sobel锐化//////////
- void CShowDIBView::OnEnhaSobel()
- {
- // TODO: Add your command handler code here
- m_Dib.Sobel();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- /////////Laplace锐化/////////
- void CShowDIBView::OnEnhaLaplace()
- {
- // TODO: Add your command handler code here
- m_Dib.Laplace();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- //////////添加随机噪声/////////
- void CShowDIBView::OnRestoreRandomnoise()
- {
- // TODO: Add your command handler code here
- m_Dib.RandomNoise();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- ///////////添加椒盐噪声//////////
- void CShowDIBView::OnRestoreSaltnoise()
- {
- // TODO: Add your command handler code here
- m_Dib.SaltNoise();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- ///////////逆滤波恢复///////////
- void CShowDIBView::OnRestoreInverse()
- {
- // TODO: Add your command handler code here
- m_Dib.RestoreInverse();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- ///////////维纳滤波恢复////////////
- void CShowDIBView::OnRestoreWiener()
- {
- // TODO: Add your command handler code here
- m_Dib.RestoreWiener();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- void CShowDIBView::OnRecon()
- {
- // TODO: Add your command handler code here
- m_Dib.Reconstruction();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- void CShowDIBView::OnHuffman()
- {
- // TODO: Add your command handler code here
- m_Dib.Huffman();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- void CShowDIBView::OnRunlength()
- {
- // TODO: Add your command handler code here
- m_Dib.Runlength();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- void CShowDIBView::OnAlgorith()
- {
- // TODO: Add your command handler code here
- m_Dib.Algorithem();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- void CShowDIBView::OnLzw()
- {
- // TODO: Add your command handler code here
- m_Dib.LZW();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }
- void CShowDIBView::OnJpeg()
- {
- // TODO: Add your command handler code here
- m_Dib.JPEG();
- InvalidateRect( NULL, TRUE );
- UpdateWindow();
- }