ImageVerifierCode 换一换
格式:DOCX , 页数:71 ,大小:1.81MB ,
资源ID:3815133      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3815133.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(图像处理案例new.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

图像处理案例new.docx

1、图像处理案例newImager 指南注意: 本文档仅提供设计思路,步骤并非完整的制作步骤,代码不定能直接编译运行。完整代码请参照源程序。Imager的使用简介Imager是一个集成了屏幕抓取、图像处理和图像编辑等基本功能的软件。Imager具有Office XP界面风格,采用FathSoft的ImageX控件进行图像处理,能够处理bmp、jpg、gif等多种图形文件,能够通过网络、屏幕抓取以及从扫描仪等设备中获取图像资源。图6-1 Imager主界面获取图像资源抓取屏幕单击File菜单,选中Capture菜单项,在Capture子菜单中选择Screen,抓取屏幕图6-2 抓取屏幕图6-3 抓取

2、屏幕结果打开图像单击File菜单,选中Open菜单项。打开图像文件。打开图像文件来自扫描仪单击File菜单,选中Aquire菜单项,打开扫描仪面板。打开Aquire面板来自网络的图像资源单击File菜单,选中Import选项,开网络图像资源对话框。图像处理基本处理基本的图像处理包括图像的翻转、镜像、缩放和旋转等。在Imager界面左边的ToolBox面板中选择“图像处理”页,可以看到相应按钮。原图翻转镜像旋转45度缩放滤镜操作滤镜处理可以对图像进行模糊、反色、锐化、羽化等滤镜操作。在Imager界面左边的ToolBox面板中选择“滤镜操作”页,可以看到相应按钮。反色模糊边缘Gray Scale

3、图像编辑图像编辑可以在图像上进行自由画线、画矩形/椭圆等操作。在Imager界面左边的ToolBox面板中选择“图像编辑”页,可以看到相应按钮。自由手绘画椭圆二、Imager的开发2.1 开发工具与设置2.1.1 BCGPROBCGPRO(BCGControlBar Professional)是一个用于应用程序界面开发的界面库,其前身为一个名为CJLIBRARY的共享界面库,后经过改进商业化。BCGPRO提供了多种风格的界面效果和格式控件,这包括Office 2000/Office XP/Window XP界面风格以及各种按钮、列表框、工具条等。BCGPRO的安装找到BCGPRO安装程序BCG

4、ControlBarPro.exe,双击开始安装。2按照提示,单击”Next”或“Yes”按钮,直到出现如下提示。单击“Finish”按钮,完成安装。完成安装后,BCGPRO安装程序会自动查找计算机上的VC,并试图将BCGPRO的工程向导以及帮助文件集成到VC中。单击“OK”按钮,让其完成该项工作。3如果集成顺利的话,会出现如下窗口,单击“Close”按钮,BCGPRO安装程序会试图调用VC编译BCGPRO的动态和静态链接库。4在随后启动的BCGPRO Build Wizard中单击下一步。5在如下窗口中选择需要编译的工程类型。一般多选择VC+6 Release和VC+6 Debug两个动态链

5、接库。如果需要使用到静态链接库或者其它Unicode类型的动态库,可以选择相应的选项。单击“下一步”。6BCGPRO Build Wizard开始编译所需的库文件。编译进度会在进度条上显示。编译完成后单击“下一步”。7 BCGPRO Build Wizard提供了编译过程中产生的信息,如果有编译错误,能在其中看到。单击“完成”完成BCGPRO的编译工作。安装正式完工。创建BCGPRO工程启动VC6,在File菜单中选择New菜单项创建一个工程。在工程向导列表中可以单刀BCGPRO安装程序在其中添加了两个工程向导,分别为BCGPRO AppWizard和BCGSkin Application W

6、izard,构建程序界面使用前者,后者用来创建程序Skin的。选择BCGPRO AppWizard,输入工程名和工程路径,并单击OK进入到BCGPRO工程向导。前面的步骤跟MFC AppWizard相同,设置也类似,只是BCGPRO中的资源文件只有English(US)一种,要换成中文的资源,还需要费一些功夫。按照提示设置工程并单击下一步,直到出现如下窗口,开始BCGPRO的设置。你可以选择应用程序界面的风格是类似VC6还是Office 2000或者Office XP,以及是否支持浮动菜单条以及256色的工具条图像(VC默认支持的是16色)等。设置后单击“Next”。在下面的窗口中选择应用程序

7、界面中需要用到的特殊元素。例如VC6中典型的Workspace bar以及OutLook中的shortcuts bar等。也可以现在不选择,等以后在工程中添加相应代码来添加界面元素。单击“Next”按钮。在本窗口中设置了是否支持用户自定义菜单和工具条,以及可以自定义的内容。单击“Next”继续。在最后一个窗口里,可以选择是否应用Skin,一般的程序都可以不选择该项。单击“Finish”完成工程向导,BCGPRO工程向导会自动为你创建工程和代码。BCGPRO自动在工程的StdAfx.h头文件中包含了BCGCBProInc.h,该头文件中声明了BCGPRO中所提供的类。BCGPRO安装程序还将BC

8、GPRO的头文件文件夹和库文件文件夹添加到VC6的头文件路径和库文件路径中。这样编译工程的时候可以找到所需的BCGPRO文件。要运行BCGPRO界面的程序,需要将相应的动态链接库(如果使用动态链接库)从BCGPRO安装目录下的bin子文件夹中拷贝到用户程序所在的文件夹中。最后用户程序发布时,该动态链接库也要随之一起发布。下面是BCGPRO附带的例子程序的界面效果。.NET风格OutLook风格各种控件2.1.2 ImageXImageX是FathSoft推出的一个用于图像显示和处理的ActiveX控件,未注册的有使用时间限制。双击ImageX的安装程序imgsetup.exe,启动Imager

9、的安装向导。按照提示进行安装设置,并单击“Next”按钮,直至安装完成。Imager安装程序会向操作系统注册一个名称为Imager的控件,其对应的文件为Imager安装目录下的Imagex.ocx。2.2 搭建应用程序框架2.2.1 目标这一部分工作的目的是使用BCGPRO创建一个Office XP风格的应用程序界面,创建所需的工具条、TOOLBOX以及建立命令消息映射(即用户操作命令与相应处理函数之间的映射)。2.2.2 搭建工程打开VC6,使用BCGPRO工程向导创建工程,名为Imager。单击OK开始工程向导。在下面所示的窗口中选择Multipile Document在下面所示的窗口中确

10、保选中了支持ActiveX Controls项。在下面所示的窗口中选择CimagerView的父类为CFormView,因为我们需要在视图中添加ActiveX控件,使用CFormView会比较方便。在下面所示的窗口中进行如图所示的设置。选择Office XP的界面风格使用浮动菜单条(Docking menu bar)和切换式MDI。在下面所示的窗口中进行如图所示的设置。选择BCGPRO支持Outlook风格的标签、Immediate Docking Style和Autohide bars。单击“Finish”按钮,接受后面的默认设置。下图为初始的应用程序界面。2.2.3 创建工具条一般的工具条

11、我们需要一个普通的工具条,用以执行图像缩放、切换等功能。如下图所示。工具条的按钮依次为“前一张图片”,“后一张图片”,“放大”,“缩小”。创建工具条资源。工具条ID为IDR_TOOLBAR1,其上面按钮的ID分别为ID_PREV_PIC,ID_NEXT_PIC,ID_ZOOM_IN,ID_ZOOM_OUT。在头文件MainFrm.h中为主框架类CMainFrame添加一个CBCGPToolBar类的对象。class CMainFrame : public CMDIFrameWnd.protected: / control bar embedded members.CBCGPToolBar m_

12、wndToolBar1;.;在CMainFrame的OnCreate函数中创建工具条。int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct). if (!m_wndToolBar1.Create(this, /创建工具条 WS_CHILD | WS_VISIBLE | CBRS_LEFT | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE | CBRS_SIZE_DYNAMIC | CBRS_GRIPPER | CBRS_BORDER_3D, ID_VIEW_TOOLBAR1) |/当工具条有变

13、化时将向通过该ID发送WM_COMMAND消息 !m_wndToolBar1.LoadToolBar (IDR_TOOLBAR1, 0, 0, TRUE )/加载工具条资源 TRACE0(Failed to create build toolbarn); return FALSE; / fail to create m_wndToolBar1.SetWindowText (Viewer Bar); /设置工具条标题 m_wndToolBar1.EnableDocking(CBRS_ALIGN_ANY); /工具条支持任意位置停靠 EnableDocking(CBRS_ALIGN_ANY); /

14、CMainFrame支持工具条任意位置停靠 DockControlBar(&m_wndToolBar1);/停靠工具条. return 0;在IDR_POPUP_TOOLBAR菜单资源中添加ID_VIEW_TOOLBAR1菜单项,用于显示和隐藏该工具条。在ClassWizard中添加ID_VIEW_TOOLBAR1的COMMAND消息和UPDATE_COMMAND_UI消息的响应函数。在CMainFrame的上述响应函数中添加如下代码用于显示和隐藏该工具条。void CMainFrame:OnViewToolbar1() ShowControlBar (&m_wndToolBar1, !(m_

15、wndToolBar1.GetStyle()& WS_VISIBLE), FALSE, TRUE); /如果Toolbar1可见则隐藏,反之则显示。void CMainFrame:OnUpdateViewToolbar1(CCmdUI* pCmdUI) pCmdUI-SetCheck (m_wndToolBar1.GetStyle()& WS_VISIBLE);/如果Toolbar1可见,则在该菜单项上加上选中标记。该工具条最后的效果如下图所示。选中标记工具条具有特殊按钮的工具条我们还需要一个叫做Format Bar的工具条,上面需要有下拉列表和颜色选取器。如下图所示。创建工具条资源。工具条I

16、D为IDR_FORMAT_BAR,上面按钮的ID分别为IDC_LINE_TYPE、IDC_LINE_WEIGHT、IDC_FORE_COLOR、IDC_BACK_COLOR、IDC_FONT_NAME、IDC_FONT_WEIGHT、ID_BOLD、ID_ITALIC、ID_UNDERLINE,用于选择线形,线宽,前景色,背景色,字体、字号,粗体,斜体,下划线。这些工具条上的按钮将被用户自定义的按钮替换掉。其中线形,线宽,字体,字号将替换成非按钮对象,因此不需要设置它们的图像,它们仅仅起到占位的作用。创建一个CBCGPToolBar的派生类CFormatBar。其中头文件中代码如下:class

17、 CFormatBar : public CBCGPToolBar DECLARE_SERIAL(CFormatBar)/ Constructionpublic: CFormatBar();/ Operationspublic: virtual void CFormatBar:OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler); CBCGPColorMenuButton* CreateColorButton(UINT id);/ Attributespublic: void Reset(); CBCGPColorMenuButt

18、on* pColorButton; CBCGPColorMenuButton* pBackColorButton; CSize m_szBaseUnits;protected: CPalette m_palColorPicker; / Palette for color picker int m_nNumColours;/ Implementationprotected: virtual void OnReset (); / Generated message map functions /AFX_MSG(CFormatBar) /AFX_MSG DECLARE_MESSAGE_MAP();向

19、cpp文件中加入颜色定义static ColourTableEntry crColours = RGB(0x00, 0x00, 0x00), _T(Black) , RGB(0xA5, 0x2A, 0x00), _T(Brown) , RGB(0x00, 0x40, 0x40), _T(Dark Olive Green) , RGB(0x00, 0x55, 0x00), _T(Dark Green) , RGB(0x00, 0x00, 0x5E), _T(Dark Teal) , RGB(0x00, 0x00, 0x8B), _T(Dark Blue) , RGB(0x4B, 0x00, 0x

20、82), _T(Indigo) , RGB(0x28, 0x28, 0x28), _T(Gray-80%) , RGB(0x8B, 0x00, 0x00), _T(Dark Red) , RGB(0xFF, 0x68, 0x20), _T(Orange) , RGB(0x8B, 0x8B, 0x00), _T(Dark Yellow) , RGB(0x00, 0x93, 0x00), _T(Green) , RGB(0x38, 0x8E, 0x8E), _T(Teal) , RGB(0x00, 0x00, 0xFF), _T(Blue) , RGB(0x7B, 0x7B, 0xC0), _T(

21、Blue-Gray) , RGB(0x66, 0x66, 0x66), _T(Gray-50%) , RGB(0xFF, 0x00, 0x00), _T(Red) , RGB(0xFF, 0xAD, 0x5B), _T(Light Orange) , RGB(0x32, 0xCD, 0x32), _T(Lime) , RGB(0x3C, 0xB3, 0x71), _T(Sea Green) , RGB(51, 204, 204), _T(Aqua) , RGB(0x7D, 0x9E, 0xC0), _T(Light Blue) , RGB(0x80, 0x00, 0x80), _T(Viole

22、t) , RGB(0x7F, 0x7F, 0x7F), _T(Gray-40%) , RGB(0xFF, 0xC0, 0xCB), _T(Pink) , RGB(0xFF, 0xD7, 0x00), _T(Gold) , RGB(0xFF, 0xFF, 0x00), _T(Yellow) , RGB(0x00, 0xFF, 0x00), _T(Bright Green) , RGB(0x00, 0xFF, 0xFF), _T(Turquoise) , RGB(0, 204, 255), _T(Sky Blue) , RGB(234, 128, 102), _T(Plum) , RGB(0xC0

23、, 0xC0, 0xC0), _T(Gray-25%) , RGB(0xFF, 0xE4, 0xE1), _T(Rose) , RGB(255, 254, 153), _T(Tan) , RGB(0xFF, 0xFF, 0xE0), _T(Light Yellow) , RGB(204, 255, 204), _T(Light Green ) , RGB(204, 255, 255), _T(Light Turquoise) , RGB(153, 204, 255), _T(Pale Blue) , RGB(204, 153, 255), _T(Lavender) , RGB(0xFF, 0x

24、FF, 0xFF), _T(White) ;在该类中添加一个函数CreateColorButton,用于创建一个指定ID的颜色选取按钮。 if (m_palColorPicker.GetSafeHandle () = NULL)m_nNumColours = sizeof (crColours)/sizeof(ColourTableEntry);ASSERT(m_nNumColours MAX_COLOURS)m_nNumColours = MAX_COLOURS;/ Create the palettestruct LOGPALETTE LogPalette;PALETTEENTRY Pal

25、EntryMAX_COLOURS;pal;LOGPALETTE* pLogPalette = (LOGPALETTE*) &pal;pLogPalette-palVersion = 0x300;pLogPalette-palNumEntries = (WORD) m_nNumColours; for (int i = 0; i palPalEntryi.peRed = GetRValue(crColoursi.crColour);pLogPalette-palPalEntryi.peGreen = GetGValue(crColoursi.crColour);pLogPalette-palPa

26、lEntryi.peBlue = GetBValue(crColoursi.crColour);pLogPalette-palPalEntryi.peFlags = 0;m_palColorPicker.CreatePalette (pLogPalette);CBCGPColorMenuButton* pColorButton = new CBCGPColorMenuButton (id, _T(Text Color.), &m_palColorPicker);pColorButton-EnableAutomaticButton (_T(Automatic), RGB (0, 0, 0);pC

27、olorButton-EnableOtherButton (_T(More Colors.);pColorButton-SetColumnsNumber (8);/ Initialize color names:for (int i = 0; i m_nNumColours; i+)CBCGPColorMenuButton:SetColorName (crColoursi.crColour, crColoursi.szName);return pColorButton;重载CBCGPToolBar类的OnReset函数。在该函数内将特殊的按钮去替换工具条上普通的按钮。每次BCGPRO创建工具条

28、前都会调用该函数。void CFormatBar:Reset()CBCGPToolbarComboBoxButton comboLineStyle(IDC_LINE_TYPE,CImageHash:GetImageOfCommand(IDC_LINE_TYPE,FALSE),CBS_DROPDOWNLIST);comboLineStyle.AddItem(SOLID);comboLineStyle.AddItem(Dash);comboLineStyle.AddItem(Dash Dot);comboLineStyle.AddItem(Dot);comboLineStyle.AddItem(D

29、ash Dot Dot);comboLineStyle.SelectItem(NULL);ReplaceButton(IDC_LINE_TYPE,comboLineStyle);/Line WeightCBCGPToolbarComboBoxButton comboLineWeight(IDC_LINE_WEIGHT,CImageHash:GetImageOfCommand(IDC_LINE_WEIGHT,FALSE),CBS_DROPDOWNLIST);comboLineWeight.AddItem(0);comboLineWeight.AddItem(1);comboLineWeight.AddItem(2);comboLineWeight.AddItem(5);comboLineWeight.AddItem(8);comboLineWeight.AddItem(10);comboLineWei

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1