《【教学课件】第三章图像变换.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第三章图像变换.ppt(12页珍藏版)》请在三一办公上搜索。
1、第三章 图像变换,3.2 图像变换示例:TransformShow,1)使用AppWizard生成一个基于多文档的项目TransformShow2)将CTransformShowView类的基类设为CScrollView类3)将dibapi.h,dibapi.cpp增加到TransformShow项目中在dibapi.h 中增加定义:/Color quantization algorithm#define CQ_HISTOGRAM1#define CQ_OCTREE2/Image position in Canvas#define LEFT_UP1#define CENTER_UP2#defi
2、ne RIGHT_UP3#define LEFT_CENTER4#define CENTER_CENTER5#define CENTER_RIGHT 6#define LEFT_DOWN7#define CENTER_DOWN8#define RIGHT_DOWN9,声明:/DIB transformHDIB CropDIB(HDIB,LPRECT);在dibapi.cpp 中增加函数CropDIB()定义4)将Dib.h,Dib.cpp,CqOctree.cpp增加到TransformShow项目中在Dib.h 中增加声明:public:BOOLCrop(CRect rc);在Dib.cpp
3、 中增加函数Crop()定义5)将String Table中的IDR_TRANSFTYPE修改为:“nDibnDibnDib Files(*.bmp;*.dib)n.bmpnTransformShow.DocumentnTransf Document”。6)在CTransformShowDoc类中增加一个表示Cdib对象指针公共数据成员m_pDib:CDib*m_pDib;并在CTransformShowDoc类的构造函数中初始化它:m_pDib=new CDib;析构函数中释放:delete m_pDib;,7)在CTransformShowDoc类的成员函数Serialize开始处增加一条
4、:m_pDib-Serialize(ar);在TransformShowDoc.h中增加一条:#include Dib.h“8)修改CTransformShowView类的OnInitialUpdate函数;7)在CTransformShowView:OnDraw函数中调用Cdib:Display函数显示DIB;,9)在IDR_TRANSFTYPE中增加一个弹出菜单,菜单中增加具体变换效果项;10)用ClassWizard给各菜单命令增加处理函数,包括COMMAND和UPDATE_COMMAND_UI处理函数;11)在UPDATE_COMMAND_UI处理函数中,将菜单命令有效的条件设为m_p
5、Dib不为空:void CTransformShowView:OnUpdateCrop(CCmdUI*pCmdUI)pCmdUI-Enable(!GetDocument()-m_pDib-IsEmpty();12)在COMMAND处理函数中,调用对应的Cdib类的功能函数,并改变文档的有关信息:,12)协调调色板:在MainFrm.h中定义:#define WM_REALIZEPAL(WM_USER+0 x100)声明响应消息WM_PALETTECHANGED和WM_QUERYNEWPALETTE的保护函数:afx_msg void OnPaletteChanged(CWnd*pFocusWn
6、d);afx_msg BOOL OnQueryNewPalette();在MainFrm.cpp中定义消息:ON_WM_PALETTECHANGED()ON_WM_QUERYNEWPALETTE()定义函数:void CMainFrame:OnPaletteChanged(CWnd*pFocusWnd)BOOL CMainFrame:OnQueryNewPalette(),在TransformShowView.h中增加响应消息WM_REALIZEPAL的保护函数声明:afx_msg LRESULT OnRealizePal(WPARAM wParam,LPARAM lParam);在TransformShowView.cpp中增加函数OnRealizePal定义;13)在项目工程中加入输入库winmm.lib,使Delay函数调用的TimeGetTime函数能被正确连接。在菜单Project 的Setting项的Link页中设置对象/库模块为winmm.lib。,