(强烈推荐)毕业论文设计_基于VC++的图像处理系统设计与实现(3)

2018-11-26 22:24

具体的使用方法,在以下部分进行介绍。

1.3 总体设计

1.3.1 项目规划

图像处理系统是一个典型的图像处理软件,它由图像显示、图像转换、图像处理、字符识别、其他和帮助等模块组成。

? 图像显示模块

该模块主要包括显示位图、显示JPEG、显示GIF 3个部分。 ? 图像转换模式

该模块主要包括位图转换为JPEG、JPEG转换为位图、位图转换为GIF、GIF转换为位图4个部分。

? 图像处理模块

该模块主要包括图像旋转、图像锐化处理、图像反色处理、灰度化处理、线性变换5个部分。

? 字符识别模块

该模块主要包括手写数字识别。 ? 其他模块

该模块主要包括设置菜单的固定颜色和随机颜色两个部分。 ? 帮助模块

该模块主要包括软件的版本、开发单位等信息。 1.3.2 系统功能架构图

系统功能构架图如图1.1所示

图1.1 图像处理系统功能架构图

1.4 系统设计

1.4.1 设计目标

本系统属于小型的图像处理软件,主要用于实现图像的显示与批量转换操作。具体设计要求如下。

? 实现各种图像格式的显示。

? 系统采用良好的人机对话模式,界面设计美观、友好。 ? 支持图像的单一转换与批量转换。

? 实现位图的各种常规操作。例如图像旋转、灰度化处理、线性变

换等。

? 系统运行稳定、安全可靠。 1.4.2 开发及运行环境

系统开发平台:Visual C++ 6.0 。

运行平台:Windows XPWindows 2000Windows 2003 。 分辨率:最佳效果 1024*1280像素。

1.5 技术准备

1.5.1 基本绘图操作

绘图操作通常是指在窗口的某个区域输出位图图像。窗口通常关联一个设备上下文CDC,所有的绘图操作都是通过CDC来完成的。用户可以通过调用窗口类的GetDC方法获得一个CDC对象指针。CDC提供BitBlt、StretchBlt等方法来输出位图,但是这些方法均需要借助另一个CDC对象来实现。如何设置源设备上下文,并调用BitBit方法输出位图。

CDC*Pdc=GetDC( ); 获取窗口设备的上下文 CBitmap bk ; 定义位图对象 CDCmemdc; 定义设备上下文 memdc.CreateCompatibleDC(pDC); 创建一个兼容的设备上下文

bk.LoadBitmap(IDB_CHESSBOARD); 加载位图对象 memdc.SelectObject(&bk); 选中位图 1.5.2 内存画布的设计

在绘制图像时,如果频繁的进行多次绘图操作,会出现闪烁的情况。为了防止闪烁的出现,可以设计一个临时的画布,称之为内存画布,让所有的绘图操作均在内存画布上进行,然后在内存画布对象失去作用域时将其输出到目标设备上下文中,这样就阻止了闪烁情况的出现,内存画布的设计代码如下:

m_

pbmp->CreateCompatibleBitmap(Pdc,rect.Width(),rect,Height() );

m_poldbmp=SelectObject(m_bmp); 选中位图对象 m_Pdc=PdC; 设置成员变量 m_Rect=rect; 设置成员变量 将目标区域绘制在内存画布上 this->BitBlt(m_Rect.leftm_Rect.Height(),

Pdc,m_Rect.left,m_Rect.top,SRCCOPPY);

SelectObject(m_poldbmp); 选中之前选中的对象 If(m_pbmp!=NULL) 判断位图对象是否为空

m_Rect.top

m_Rect.Width()

delete m_pbmp; 释放位图对象 DelectObject(this); 释放设备上下文

内存画布CMemDC只包含一个构造函数和析构函数,其中,在构造函数部分,将根据参数pDC创建一个兼容的设备上下文,并且将pDC的内容绘制在内存画布上;在析构函数中,会将内存画布的内容输出到目标设备的上下文中。 1.5.3 自定义全局函数

在Visual C++中没有提供直接的函数用于获取文件的名称(去除扩展名)和获取文件的扩展名(去除文件名)。为此,定义了两个全局函数来获取文件的名称和文件扩展名。函数定义如下:

CString ExtractFileName(CString&str) 获取文件名称 {

intpos=str.ReverseFind(‘.’)} 反向查找“.”的

位置

return str.Left(pos); 从左方开始截取字符串,并返回截取的

字符串

}

CString GetFileExtended Name (CString&strFile) 获取文件扩展

{

int pos=strFile.ReverseFind(‘.’); 反向查找“.”的

位置

return strFile.Right(strFile.GetLength()-pos-1) }

在为本系统设计自定义菜单时,由于主界面对话框的宽度可以调整,导致菜单栏的高度会发生变化,如图1.2所示。

图1.2 菜单栏高度

从1.2中可以发现,当对话框的宽度变化时,菜单栏的高度也会发生变化,这在绘制菜单的背景颜色时候会带来困难,需要从user32.dll动态链接库中导出该函数。流程图如下:

1.5.4 自定义菜单

为了使程序界面更加美观,在本系统中自定义了一个菜单,实现菜单的特殊效果显示,如图1.3所示:

图1.3 自定义菜单

在Visual C++中,实现自定义菜单是比较容易的,MFC类库提供了CMenu


(强烈推荐)毕业论文设计_基于VC++的图像处理系统设计与实现(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:最新AIS评分与ISS评分

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: