毕业论文_基于vc的图像处理系统设计与实现(编辑修改稿)内容摘要:
//选中之前选中的对象 If(m_pbmp!=NULL) //判断位图对象是否为空 delete m_pbmp; //释放位图对象 DelectObject(this); //释放设备上下文 内存画布 CMemDC 只包含一个构造函数和析构函数,其中,在构造函数部分,将根据参数 pDC 创建一个兼容的设备上下文,并且将 pDC 的内容绘制在内存画布上;在析构函数中,会将内存画布的内容输出到目标设备的上下文中。 自定义全局函数 在 Visual C++中没有提供直接的函数用于获取文 件的名称(去除扩展名)和获取文件的扩展名(去除文件名)。 为此,定义了两个全局函数来获取文件的名称和文件扩展名。 函数定义如下: CString ExtractFileName(CStringamp。 str) //获取文件名称 { intpos=(‘.’)} //反向查找 “ .” 的位置 return (pos); //从左方开始截取字符串,并返回截取的字符串 } CString GetFileExtended Name (CStringamp。 strFile) //获取文件扩展名 { int pos=(‘.’); //反向查找“ .”的位置 return (()pos1) } 在为本系统设计自定义菜单时,由于主界面对话框的宽度可以调整,导致菜单栏的高度会发生变化,如图 所示。 图 菜单栏高 度 从 中可以发现,当对话框的宽度变化时,菜单栏的高度也会发生变化,这在绘制菜单的背景颜色时候会带来困难,需要从 动态链接库中导出 菜单栏高度 5 该函数。 流程图如下: 自定义菜单 为了使程序界面更加美观,在本系统中自定义了一个菜单,实现菜单的特殊效果显示,如图 所示 : 图 自定义菜单 在 Visual C++中,实现自定义菜单是比较容易的, MFC 类库提供了 CMenu 类用于 设计菜单,用户只要从该类派生一个子类,然后改写 MeasureItem 方法,hModule 址 void*pVoid=(void*)GetProcAddress(hModule,GetMenuBarInfo)。 pVoid 数 ((FunGetMenuInfo)pVoid)(hwnd,idObject, ::FreeLibrary(hModule)。 资源 ::FreeLibrary(hModule)。 资源 N Y N Y HMODULEhModule=::LoadLibrary()。 6 设置菜单项的高度和宽度;改写 DrawItem 方法,根据菜单项的不同状态,绘制不同效果的菜单项就可以了。 具体设计如下 : (1) 从 CMenu 类派生一个子类 CCustomMenu。 (2) 定义一个菜单项结构 CMenuItem,记录菜单项的信息。 代码如下: //定义一个结构,记录菜单项的详细信息 Struct CMenuItem { CString m_Menutext。 //菜单项的文本 UINTm_ImageIndex。 //菜单项图像索引 Int m_MenuType。 // 菜单项的类型 2:顶层菜单, 1:弹出式菜单, 0:分隔条,其他:普通菜单 (3) 向 CCustomMenu 类中添加成员变量。 (4) 在 CCustomMenu 类的构造函数中初始化成员变量。 CCustomMenu::CCustomMenu() { m_ItemCount = 0; //初始化菜单项数量 m_Index = 0。 //初始化整型变量 m_MenuList = NULL。 //初始化菜单列表 m_BkColor = RGB(204,199,186)。 //初始化背景颜色 m_SelTopColor = RGB(193, 210, 238)。 //初始化顶层菜单颜色 m_RandColor = FALSE。 //是否采用随机颜色 } (5) 在 CCustomMenu 类的析构函数中释放成员变量占据的堆空间。 CCustomMenu::~CCustomMenu() { if (m_ItemCount 0) //如果菜单项 0,则释放菜单列表 delete []m_MenuList。 } (6) 向 CCustomMenu 类中添加 GetAllItemCount 方法,获取菜单项的数量,当前流程图如下: 7 (7) 向 CCustomMenu 类中添加 AttachMenu 方法,附加菜单句柄到CCustomMenu 类对象上 BOOL CCustomMenu::AttatchMenu(HMENU hMenu) { Attach(hMenu)。 //附加菜单句柄到菜单对象 GetAllItemCount(hMenu,m_ItemCount)。 //获取菜单项的数量 if (m_ItemCount 0) //判断菜单项数量是否 0 m_MenuList = new CMenuItem[m_ItemCount]。 //创建菜单列表 return TRUE。 } (8)向 CCustomMenu 类中添加 SetMenuItemInfo 方法,将每个菜单项关联一个 CMenuItem结构对象。 (9)向 CCustomMenu类中添加 GetTopMenuWidth方法,获取顶层菜单的高度。 流程图如 下: CMenu*pMenu=CMenu::FromHandle(hMenu)。 pMenu FirstFind intcount=pMenuGetMenuItemCount()。 inti=0 icount i++ Multi intemcount=0 Y Y Y N N N 8 (10)向 CCustomMenu 类中添加 GetClientMenuRgn 方法,获取菜单栏中的非菜单项区域。 流程图如下: //获取菜单栏中非菜单项区域 HRGN CCustomMenu::GetClientMenuRgn() MENUBARINFO MenuInfo。 //定义菜单项信息对象 memset(amp。 MenuInfo,0,sizeof(MENUBARINFO))。 //初始化菜单项信息 = sizeof(MENUBARINFO)。 //设置菜单项信息结构的大小 GetMenuBarInfo(AfxGetMainWnd()m_hWnd,OBJID_MENU,0,amp。 MenuInfo)。 CRect rc =。 //获取菜单栏的区域 int MenuCount = GetMenuItemCount()。 //获取顶层菜单的数量 CRect *pRC = new CRect[MenuCount]。 //定义一个区域指针,记录菜单项区域 HRGN *pRgn = new HRGN[MenuCount]。 //定义一个选区指针,记录菜单项选区 CRect winRC。 //定义一个区域对象 AfxGetMainWnd()GetWindowRect(winRC)。 //获取主窗口区域 HRGN retRgn = CreateRectRgn(0,0,0,0)。 HRGNMenuClientRgn = CreateRectRgn(0,0,0,0)。 for (int j=0。 jMenuCount。 j++) //组合菜单项的区域 //去除菜单栏中菜单项的区域,以获取非菜单项区域 CombineRgn(retRgn,MenuRgn,MenuClientRgn,RGN_DIFF)。 for ( j=0。 jMenuCount。 j++) intCount=GetMenuItemCount() iCount ::GetMenuItemRect(AfxGetMainWnd()m_hWnd,m_hMenu,i,rc)。 i++ returnwidth。 N Y inti=0 9 (11)向 CCustomMenu 类中添加 SetMenuItemText 方法,绘制菜单项文本。 void CCustomMenu::SetMenuItemText(CDC *pDC, LPSTR strMenuText, CRect Rect) { (20,0)。 pDCDrawText(strMenuText,Rect,DT_SINGLELINE|DT_VCENTER|DT_LEFT)。 } (12)向 CCustomMenu 类中添加 DrawTopMenuBk 方法,绘制顶层菜单的背景颜色。 (13)向 CCustomMenu 类中添加 DrawSepMenu 方法,绘。毕业论文_基于vc的图像处理系统设计与实现(编辑修改稿)
相关推荐
因为每个 DS1820 都有一个独特的片序列号,所以多只 DS1820 可以同时连在一根单线总线上,这样就可以把温度传感器放在许多不同的地方。 这 9 一特性在 HVAC 环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。 DS1820 有三个主要数字部件 [8]: 1) 64 位激光 ROM, 2)温度传感器, 3)非易失性温度报警触发器 TH 和 TL。
适合于低速测量,转速增高,误差增大。 “ M/T 法”测量误差分析 由其测量原理可知。 输入计数脉冲和计数定时值在理论上是严格同步的,因此,在理论上, m1(定时器的计数值)不考虑误差,由于实际启动是由程序来控制的(系统应采取由输入计数脉冲来同步),故可能会产生一个脉冲的量化误差,因而, 转速变化为: 第二章 基于霍尔单片机的转速测量原理 7 其相对误差为: (213) 由上式可知:
说明运动估计视频处理的各个步骤所需处理,并分析处理所需算法,介绍背景建模; 第 4 章:算法的实现。 介绍实现该算法的工具 ,并对程序各模块一一实现; 第 5 章:算法的验证和评价。 对算法进行测试,对结果进行分析; 第 6 章:结论。 本章对全文工作以及毕业收获进行总结,指出了还需改进的地方。 四川大学本科毕业论文 基于块匹配的人群运 动估计 6 2 块匹配算法介绍及分析
体系结构采用配对的点对点的结构模式,并采用适用于局域网、安全性比较好的网络协议,安全性可得到较好的保证。 C/S 体系结构一般面向相对固定的用户群,程序更加注重流程,它可以对权限进行多层次校验,提供了更安全的存取模式,对信息安全的控制能力很强。 7) 速度不同 由于 C/S体系结构在逻辑结构上比 B/S 体系结构少一层,对于相同的任务,C/S体系结构完成的速度总比 B/S 体系结构快。 使得
J2EE 体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。 通过提供统一的开发平台, J2EE 降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用 ,添加目录支持,增强了安全机制,提高了性能。 结构的选择方面有两种: B/S 结构和 C/S 结构
供货期短、售后服务好的产品。 作为 “ 绿色 ” 制造,产品还必须在一 定程度上是艺术品,以与用户的生产、工作、生活环境相适应,给人以高尚的精神享受,体现着物质文明、精神文明与环境文明的高度交融。 每发展与采用一项新技术时,应站在哲学高度,慎思 “ 塞翁得马,安知非祸 ” ,即必须充分考虑可持续发展,计及环境文明。 现代设计技术 先进制造技术( AMT)可以理解成是一个专业