图像处理案例newWord文档下载推荐.docx

上传人:b****4 文档编号:16721387 上传时间:2022-11-25 格式:DOCX 页数:71 大小:1.81MB
下载 相关 举报
图像处理案例newWord文档下载推荐.docx_第1页
第1页 / 共71页
图像处理案例newWord文档下载推荐.docx_第2页
第2页 / 共71页
图像处理案例newWord文档下载推荐.docx_第3页
第3页 / 共71页
图像处理案例newWord文档下载推荐.docx_第4页
第4页 / 共71页
图像处理案例newWord文档下载推荐.docx_第5页
第5页 / 共71页
点击查看更多>>
下载资源
资源描述

图像处理案例newWord文档下载推荐.docx

《图像处理案例newWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《图像处理案例newWord文档下载推荐.docx(71页珍藏版)》请在冰豆网上搜索。

图像处理案例newWord文档下载推荐.docx

模糊

边缘

GrayScale

图像编辑

图像编辑可以在图像上进行自由画线、画矩形/椭圆等操作。

在Imager界面左边的ToolBox面板中选择“图像编辑”页,可以看到相应按钮。

自由手绘

 

画椭圆

二、Imager的开发

2.1开发工具与设置

2.1.1BCGPRO

BCGPRO(BCGControlBarProfessional)是一个用于应用程序界面开发的界面库,其前身为一个名为CJLIBRARY的共享界面库,后经过改进商业化。

BCGPRO提供了多种风格的界面效果和格式控件,这包括Office2000/OfficeXP/WindowXP界面风格以及各种按钮、列表框、工具条等。

BCGPRO的安装

找到BCGPRO安装程序BCGControlBarPro.exe,双击开始安装。

2>

按照提示,单击”Next”或“Yes”按钮,直到出现如下提示。

单击“Finish”按钮,完成安装。

完成安装后,BCGPRO安装程序会自动查找计算机上的VC,并试图将BCGPRO的工程向导以及帮助文件集成到VC中。

单击“OK”按钮,让其完成该项工作。

3>

如果集成顺利的话,会出现如下窗口,单击“Close”按钮,BCGPRO安装程序会试图调用VC编译BCGPRO的动态和静态链接库。

4>

在随后启动的BCGPROBuildWizard中单击下一步。

5>

在如下窗口中选择需要编译的工程类型。

一般多选择VC++6Release和VC++6Debug两个动态链接库。

如果需要使用到静态链接库或者其它Unicode类型的动态库,可以选择相应的选项。

单击“下一步”。

6>

BCGPROBuildWizard开始编译所需的库文件。

编译进度会在进度条上显示。

编译完成后单击“下一步”。

7>

BCGPROBuildWizard提供了编译过程中产生的信息,如果有编译错误,能在其中看到。

单击“完成”完成BCGPRO的编译工作。

安装正式完工。

创建BCGPRO工程

启动VC6,在File菜单中选择New菜单项创建一个工程。

在工程向导列表中可以单刀BCGPRO安装程序在其中添加了两个工程向导,分别为BCGPROAppWizard和BCGSkinApplicationWizard,构建程序界面使用前者,后者用来创建程序Skin的。

选择BCGPROAppWizard,输入工程名和工程路径,并单击OK进入到BCGPRO工程向导。

前面的步骤跟MFCAppWizard相同,设置也类似,只是BCGPRO中的资源文件只有English(US)一种,要换成中文的资源,还需要费一些功夫。

按照提示设置工程并单击下一步,直到出现如下窗口,开始BCGPRO的设置。

你可以选择应用程序界面的风格是类似VC6还是Office2000或者OfficeXP,以及是否支持浮动菜单条以及256色的工具条图像(VC默认支持的是16色)等。

设置后单击“Next”。

在下面的窗口中选择应用程序界面中需要用到的特殊元素。

例如VC6中典型的Workspacebar以及OutLook中的shortcutsbar等。

也可以现在不选择,等以后在工程中添加相应代码来添加界面元素。

单击“Next”按钮。

在本窗口中设置了是否支持用户自定义菜单和工具条,以及可以自定义的内容。

单击“Next”继续。

在最后一个窗口里,可以选择是否应用Skin,一般的程序都可以不选择该项。

单击“Finish”完成工程向导,BCGPRO工程向导会自动为你创建工程和代码。

BCGPRO自动在工程的StdAfx.h头文件中包含了BCGCBProInc.h,该头文件中声明了BCGPRO中所提供的类。

BCGPRO安装程序还将BCGPRO的头文件文件夹和库文件文件夹添加到VC6的头文件路径和库文件路径中。

这样编译工程的时候可以找到所需的BCGPRO文件。

要运行BCGPRO界面的程序,需要将相应的动态链接库(如果使用动态链接库)从BCGPRO安装目录下的bin子文件夹中拷贝到用户程序所在的文件夹中。

最后用户程序发布时,该动态链接库也要随之一起发布。

下面是BCGPRO附带的例子程序的界面效果。

.NET风格

OutLook风格

各种控件

2.1.2ImageX

ImageX是FathSoft推出的一个用于图像显示和处理的ActiveX控件,未注册的有使用时间限制。

双击ImageX的安装程序imgsetup.exe,启动Imager的安装向导。

按照提示进行安装设置,并单击“Next”按钮,直至安装完成。

Imager安装程序会向操作系统注册一个名称为Imager的控件,其对应的文件为Imager安装目录下的Imagex.ocx。

2.2搭建应用程序框架

2.2.1目标

这一部分工作的目的是使用BCGPRO创建一个OfficeXP风格的应用程序界面,创建所需的工具条、TOOLBOX以及建立命令消息映射(即用户操作命令与相应处理函数之间的映射)。

2.2.2搭建工程

打开VC6,使用BCGPRO工程向导创建工程,名为Imager。

单击OK开始工程向导。

在下面所示的窗口中选择MultipileDocument

在下面所示的窗口中确保选中了支持ActiveXControls项。

在下面所示的窗口中选择CimagerView的父类为CFormView,因为我们需要在视图中添加ActiveX控件,使用CFormView会比较方便。

在下面所示的窗口中进行如图所示的设置。

选择OfficeXP的界面风格使用浮动菜单条(Dockingmenubar)和切换式MDI。

选择BCGPRO支持Outlook风格的标签、ImmediateDockingStyle和Autohidebars。

单击“Finish”按钮,接受后面的默认设置。

下图为初始的应用程序界面。

2.2.3创建工具条

一般的工具条

我们需要一个普通的工具条,用以执行图像缩放、切换等功能。

如下图所示。

工具条的按钮依次为“前一张图片”,“后一张图片”,“放大”,“缩小”。

创建工具条资源。

工具条ID为IDR_TOOLBAR1,其上面按钮的ID分别为ID_PREV_PIC,ID_NEXT_PIC,ID_ZOOM_IN,ID_ZOOM_OUT。

在头文件MainFrm.h中为主框架类CMainFrame添加一个CBCGPToolBar类的对象。

classCMainFrame:

publicCMDIFrameWnd

{

...

protected:

//controlbarembeddedmembers

CBCGPToolBarm_wndToolBar1;

};

在CMainFrame的OnCreate函数中创建工具条。

intCMainFrame:

:

OnCreate(LPCREATESTRUCTlpCreateStruct)

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)||//当工具条有变化时将向通过该ID发送WM_COMMAND消息

!

m_wndToolBar1.LoadToolBar(IDR_TOOLBAR1,0,0,TRUE))//加载工具条资源

{

TRACE0("

Failedtocreatebuildtoolbar\n"

);

returnFALSE;

//failtocreate

}

m_wndToolBar1.SetWindowText("

ViewerBar"

//设置工具条标题

m_wndToolBar1.EnableDocking(CBRS_ALIGN_ANY);

//工具条支持任意位置停靠

EnableDocking(CBRS_ALIGN_ANY);

//CMainFrame支持工具条任意位置停靠

DockControlBar(&

m_wndToolBar1);

//停靠工具条

...

return0;

}

在IDR_POPUP_TOOLBAR菜单资源中添加ID_VIEW_TOOLBAR1菜单项,用于显示和隐藏该工具条。

在ClassWizard中添加ID_VIEW_TOOLBAR1的COMMAND消息和

UPDATE_COMMAND_UI消息的响应函数。

在CMainFrame的上述响应函数中添加如下代码用于显示和隐藏该工具条。

voidCMainFrame:

OnViewToolbar1()

ShowControlBar(&

m_wndToolBar1,

(m_wndToolBar1.GetStyle()&

WS_VISIBLE),

FALSE,TRUE);

//如果Toolbar1可见则隐藏,反之则显示。

OnUpdateViewToolbar1(CCmdUI*pCmdUI)

pCmdUI->

SetCheck(m_wndToolBar1.GetStyle()&

WS_VISIBLE);

//如果Toolbar1可见,则在该菜单项上加上选中标记。

该工具条最后的效果如下图所示。

选中标记

工具条

具有特殊按钮的工具条

我们还需要一个叫做FormatBar的工具条,上面需要有下拉列表和颜色选取器。

工具条ID为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。

其中头文件中代码如下:

classCFormatBar:

publicCBCGPToolBar

DECLARE_SERIAL(CFormatBar)

//Construction

public:

CFormatBar();

//Operations

virtualvoidCFormatBar:

OnUpdateCmdUI(CFrameWnd*pTarget,BOOLbDisableIfNoHndler);

CBCGPColorMenuButton*CreateColorButton(UINTid);

//Attributes

voidReset();

CBCGPColorMenuButton*pColorButton;

CBCGPColorMenuButton*pBackColorButton;

CSizem_szBaseUnits;

CPalettem_palColorPicker;

//Paletteforcolorpicker

intm_nNumColours;

//Implementation

virtualvoidOnReset();

//Generatedmessagemapfunctions

//{{AFX_MSG(CFormatBar)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

向cpp文件中加入颜色定义

staticColourTableEntrycrColours[]=

{RGB(0x00,0x00,0x00),_T("

Black"

)},

{RGB(0xA5,0x2A,0x00),_T("

Brown"

{RGB(0x00,0x40,0x40),_T("

DarkOliveGreen"

{RGB(0x00,0x55,0x00),_T("

DarkGreen"

{RGB(0x00,0x00,0x5E),_T("

DarkTeal"

{RGB(0x00,0x00,0x8B),_T("

DarkBlue"

{RGB(0x4B,0x00,0x82),_T("

Indigo"

{RGB(0x28,0x28,0x28),_T("

Gray-80%"

{RGB(0x8B,0x00,0x00),_T("

DarkRed"

{RGB(0xFF,0x68,0x20),_T("

Orange"

{RGB(0x8B,0x8B,0x00),_T("

DarkYellow"

{RGB(0x00,0x93,0x00),_T("

Green"

{RGB(0x38,0x8E,0x8E),_T("

Teal"

{RGB(0x00,0x00,0xFF),_T("

Blue"

{RGB(0x7B,0x7B,0xC0),_T("

Blue-Gray"

{RGB(0x66,0x66,0x66),_T("

Gray-50%"

{RGB(0xFF,0x00,0x00),_T("

Red"

{RGB(0xFF,0xAD,0x5B),_T("

LightOrange"

{RGB(0x32,0xCD,0x32),_T("

Lime"

)},

{RGB(0x3C,0xB3,0x71),_T("

SeaGreen"

{RGB(51,204,204),_T("

Aqua"

{RGB(0x7D,0x9E,0xC0),_T("

LightBlue"

{RGB(0x80,0x00,0x80),_T("

Violet"

{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("

BrightGreen"

{RGB(0x00,0xFF,0xFF),_T("

Turquoise"

{RGB(0,204,255),_T("

SkyBlue"

{RGB(234,128,102),_T("

Plum"

{RGB(0xC0,0xC0,0xC0),_T("

Gray-25%"

{RGB(0xFF,0xE4,0xE1),_T("

Rose"

{RGB(255,254,153),_T("

Tan"

{RGB(0xFF,0xFF,0xE0),_T("

LightYellow"

{RGB(204,255,204),_T("

LightGreen"

{RGB(204,255,255),_T("

LightTurquoise"

{RGB(153,204,255),_T("

PaleBlue"

{RGB(204,153,255),_T("

Lavender"

{RGB(0xFF,0xFF,0xFF),_T("

White"

)}

在该类中添加一个函数

CreateColorButton,用于创建一个指定ID的颜色选取按钮。

if(m_palColorPicker.GetSafeHandle()==NULL)

m_nNumColours=sizeof(crColours)/sizeof(ColourTableEntry);

ASSERT(m_nNumColours<

=MAX_COLOURS);

if(m_nNumColours>

MAX_COLOURS)

m_nNumColours=MAX_COLOURS;

//Createthepalette

struct

LOGPALETTELogPalette;

PALETTEENTRYPalEntry[MAX_COLOURS];

}pal;

LOGPALETTE*pLogPalette=(LOGPALETTE*)&

pal;

pLogPalette->

palVersion=0x300;

palNumEntries=(WORD)m_nNumColours;

for(inti=0;

i<

m_nNumColours;

i++)

palPalEntry[i].peRed=GetRValue(crColours[i].crColour);

palPalEntry[i].peGreen=GetGValue(crColours[i].crColour);

palPalEntry[i].peBlue=GetBValue(crColours[i].crColour);

palPalEntry[i].peFlags=0;

m_palColorPicker.CreatePalette(pLogPalette);

CBCGPColorMenuButton*pColorButton=new

CBCGPColorMenuButton(id,_T("

TextColor..."

),&

m_palColorPicker);

pColorButton->

EnableAutomaticButton(_T("

Automatic"

),RGB(0,0,0));

EnableOtherButton(_T("

MoreColors..."

));

SetColumnsNumber(8);

//Initializecolornames:

CBCGPColorMenuButton:

SetColorName(crColours[i].crColour,crColours[i].szName);

returnpColorButton;

重载CBCGPToolBar类的OnReset函数。

在该函数内将特殊的按钮去替换工具条上普通的按钮。

每次BCGPRO创建工具条前都会调用该函数。

voidCFormatBar:

Reset()

CBCGPToolbarComboBoxButtoncomboLineStyle(IDC_LINE_TYPE,CImageHash:

GetImageOfCommand(IDC_LINE_TYPE,FALSE),CBS_DROPDOWNLIST);

comboLineStyle.AddItem("

SOLID"

Dash"

DashDot"

Dot"

DashDotDot"

comboLineStyle.SelectItem(NULL);

ReplaceButton(IDC_LINE_TYPE,comboLineStyle);

//LineWeight

CBCGPToolbarComboBoxButtoncomboLineWeight(IDC_LINE_WEIGHT,CImageHash:

GetImageOfCommand(IDC_LINE_WEIGHT,FALSE),CBS_DROPDOWNLIST);

comboLineWeight.AddItem("

0"

1"

2"

5"

8"

10"

comboLineWei

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

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

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