简单图像处理控件的实现

来源 :科学时代·下半月 | 被引量 : 0次 | 上传用户:hmglz
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要] 在因特网上,有些图片是支持IE的,而有些是不支持IE的。对于那些不支持IE的图片格式,用户无法实现适时的网络传输。控件作为一种基于Windows平台的软件技术,恰好能满足用户的这种需求。本文介绍了简要ActiveX控件的制作过程。
  [关键词] 图像处理 ActiveX VBScript
  
  1.ActiveX概述
  ActiveX是Microsoft推出的由OLE(Object Linking and Embedding)蜕变出来的网络新技术,它的出现对Internet网络技术有一个不小的震撼。ActiveX提供了卓越的功能,它结束了Java在Internet网络技术上独领风骚的局面,使ActiveX与Java在网络技术上平分秋色。ActiveX是建立在COM基础上的,它是精简的OLE加上网络支持,动态地处理信息的对象。COM制定对象的存储表示和操作方法,是ActiveX技术的基本结构,OLE提供对象间交互的主从结构,ActiveX能提供网络层次的3项支持:脚本撰写(ActiveX Scripting)、控件(ActiveX Controls)、以及威力文档(ActiveX Documents)。ActiveX不但能够应用在信息网的网页上,而且可以应用于各种程序语言中,ActiveX使元件软件(Component Ware)的概念在网络上得以实现。
  要加强网页的交互功能,需要元件与脚本的支持,Navigator提供的是Applet, Explorer提供的是ActiveX控件与Applet。ActiveX控件与Applet是作为相对独立的元件出现的,元件就象在浏览器中执行的小程序,它是由浏览器中的虚拟机器来解释执行的。Microsoft采用VBScript作为ActiveX的脚本语言,用VBScript脚本语言可以把ActiveX控件加入到HTML网页中。
  可以用不同的方式为浏览器编写程序,使用Script语言是比较简捷的方法,JavaScript,VBScript是目前网络时髦的Script语言。VBScript是基于对象的语言,没有类和继承的功能,语法类似于Visual Basic,语言平易近人,简单易学。嵌入在HTML中的VBScript目的在于动态地处理HTML里的各种对象,如ActiveX控件,Javaapplets和forms等。VBScript加入ActiveX控件使网页活起来。HTML、VBScript和浏览器的关系如图1所示。
  
  图1 HTML,VBScript和浏览器的关系
  2.ActiveX控件的设计与实现
  只要支持COM并且和OLE相容的语言,如VC++,Java,VisualBasic,Delphi语言,都能够用于设计ActiveX控件。
  利用VisualBasic5.0的VBCCE可以设计ActiveX控件,设计简单方便,用VBCCE设计ActiveX是由UserControl对象加上各式各样的基本控件总和而成,设计ActiveX控件就是设计对象的外观,然后加上程序码模块,编写ActiveX控件的对象方法、对象属性以及事件处理过程。
  设计ActiveX控件有3种不同方法:
  ·从头设计简单的控件;
  ·将原有的基本控件功能增强,添加属性、事件和方法;
  ·组合基本控件使其达到最佳的功能。
  用VBCCE设计ActiveX控件的文件名为.ctl,存放图象文件为.ctx,.ctl和.ctx两者可以完整地描述ActiveX控件的外观和界面(属性、方法和事件),编译后为.ocx文件,即ActiveX控件。ActiveX控件的制作过程如图2所示。
  
  图2 Activex的制作过程
  Visual C++6. 0提供了两种开发控件的方式,ATL COM AppWizard和MFC ActiveX ControlWizard。这里采用MFC的方式。首先描述一下该控件的开发目标:该控件类似于VisualBasi。中的Picture Box控件,可以显示BMP位图文件,根据BMP文件的大小来自动缩放等功能。同时这个控件具有将24位真彩图转化为256级灰度图、对灰度图进行平滑、保存灰度图为BMP位图等简单功能。
  使用MFC ActiveX ControlWizard生成一个新的工程,取名为ImageProcess。这时CIassWizard自动生成三个类ClmageProcessCtrl,ClmagePmcessPropPage和CImageProcesaApp。其中CImageProcessCtrl是ActiveX控件类,CImageProcesePropPage是这个控件对应的属性页类,CImageProcessApp类具有控件模板初始化的功能。一般情况对CImageProcessApp类不需要做大的改动。
  2.1 填加CImageProceasCtrl类成员变量
  使用CIasaWizard为ClmageProceasCtrl类琪加如下成员变及,且都为Private.
  LPBYTE m_lp241mgBits;//真彩色数据指针
  LPBYTE m_lp8lmgBits; / /8位图数据指针
  long m_lngWidth;//图像宽
  long m_lngHeight;//图像高
  Tong m_lng24WidthBytes;//宽对齐后的字节数
  long m_lngBWidthBytes;
  unsigned long m_ulng24BitsCount;//图像数据数
  unsigned long m_ulngBBitsCount;
  LPBYTE m_lpBMPFiIeData; /!BMP文件数据
  LPBYTE m_1p81mgBitsMove;//移动指针
  LPBYTE m_lp241mgBitsMove;
  HANDLE m_h81mgDIB;//DIB数据句柄
  2.2 填加控件属性
  使用CIasaWizard的Automation页面中的Add property为CImageProceaeCtrl类填加属性。填加Appearan。这个Stock属性。并在ClmageProcessCtrl::DoPropExchange()中增加一行代码。PX Short(pPX, T("Appearance一)m sAppearance, 1);这行代码的作用是设置控件的初始外观特性是三维效果。
  增加BackColor属性,这个属性同样是库存属性。在后面的OnDraw)函数中将使用这个属性,如果控件中没有图像数据的时候就根据BackColor属性所设定的颜色值绘制背景颜色。
  2.3 填加控件事件
  使用C1aesWizard的ActiveX Event页面中的Add Event为CImageProcessCtrl类填加事件。
  填加Click和DblClick这两个Stock类型的事件。这样这个控件在ActiveX容器里就可以响应鼠标单击和双击事件。
  2.4 填加控件方法
  使用CIassWizard的Automation页面中的Add Method为CImageProcessCtrl类填加方法。
  首先填加Clear()方法,该方法用来清除控件中的数据,恢复原始状态。填加时,把External Name设为Clear,这是控件对外映射的方法的名称;把Internal Name设为Clear,这是此方法在ClmageProceseCtrl类内部的名称。这样做是为了将方法所对应的函数与普通的类的成员函数区分开来。
  然后填加ReadBMPFiIe()方法,该方法用来读取BMP位图文件。注意ReadBMPFiIe()的参数LPCTSTR atrFileName也要通过Add Method对话框中的Parameter list来填加。下面代码仅仅实现读取24位真彩色的BMP图,其他格式图像文件的读取读者可以自行增加。关于位图文件格式的详细讨论请读者参照相关资料,这里不再赞述。
  控件的所有方法已经增加完毕,接下来要修改和增加CImageProceasCtrl类的一些成员函数,达到辅助图像显示、安全操作内存等功能。
  2.5 修改和填加控件成员函数
  首先在CImageProcessCtrl的构造函数中填加如下代码:
  m_lpBMPFiIeData=NULL;
  m_lp241mgBits=NULL;
  m_lpBlmgBits=NULL;
  m_h81mgDIB=NULL;
  然后在析构函数中调用一leer()函数,控件中所有的保存图像数据的内存空间都是通过new运算符分配的,所以在析构函数中一定要delete掉,否则会造成内存泄露。
  增加成员函数Create256DIB ( ),该函数将一段纯图像数据转为256级灰度的DIB数据,并且返回这段DIB数据的句柄。
  随后增加ShowDI13_vfw()函数,该函数使用VFW ( Vide For函数来进行DIB数据的显示。这时要#include "vfw.h",而且增加Vfw32. lib到工程中,才能正确使用vfw函数。
  
  图3.3图象处理控件的编码制作流程
  在OnDraw)函数里姗除原来狱认的代码,垠加如下显示代码。这样控件就会根据其中的图像数据来显示不同的图片。当读人24位真彩色图的时候控件显示真彩色图像,进行灰度变化后则显示灰度图像。当没有图像数据时,控件根据前文中填加的BackColor属性来显示背景色。
  这样一个简单功能的图像处理控件的整个编码就全部结束了。在HTML页面中使用ActiveX控件包含三个基本操作:将控件放入HTML中;将该控件下载给用户;在用户机器上安装该控件。如果只是针对IE用户,在HTML中插入ActiveX控件就比较简单;如果同时兼顾IE和Netscape用户,则要做更多工作。大家知道,HTML文件由文本和各种标志(tags)组成,ActiveX控件对于IE在HTML中的标志是<OBJECT>,该标记有几个重要的参数特性,它们是:
  1)ID:为控件提供一个标识名称,为HTML代码提供一种访问该控件的方式。
  2)CLASSID:是该控件唯一的UUID,告诉IE装入哪个对象。如果使用已经开发好的控件,它的CLASSID可以通过调用Win95或NT下的应用Regedit来查找。从开始菜单中运行该程序,展开HKEY_CLASSES_ROOT项,可以看到按字母顺序排列的注册表,找到需要使用的控件名,例如WClnt,展开时可看到一个CLSID文件夹,里面就是该控件的CLASSID。 如果是自己用VC开发控件,该UUID可以在ActiveX控件项目中的ODL(对象描述库)文件中找到;通过查看控件的类信息注释来定位特定控件的UUID。
  3)CODEBASE:如果在用户机器上没有控件的当前版本,该参数告诉用户浏览器在哪里可找到要下载的控件和最新版本号。当控件作了修改后,可以更改版本号强制用户重新下载。
  4)PARAM:该标记用于设置控件的初始属性值,它有两个特性:Name和Value,即属性名称和属性值。
  此外还有一些标记,如:Width表示该控件所占的宽度,Height表示高度等,总体来说这样一个插入控件的HTML代码和插入Java Applet的HTML代码非常相似。
  3.结束语
  读者可以根据自己的需要增加若干的图像处理的功能,如灰度线性变换、中值滤波、边缘检测等等。读者也可以自己建立一个Visual Basic工程或Delphi工程,将编译生成的ImageProcess. ocx控件引用到工程里。只需要简单调用控件的方法,就可以完成快速的图像处理的操作。
  参考文献:
  [1] 王传华多媒体网页制作技术教程 清华大学出版社.
  [2] 林福宗 图像文件格式(上)-Windows编程 清华大学出版社.
  [3] 何斌,马天予,王运建VisualC++数字图像处理(第二版)人民邮电出版社.
  [4] Taubman D. High Performance Scalable Image Compression With EBCOT, Proc IEEE, Int Conference Image Processing, Vol, 343-3891.
  [5] Rinaldo R. Calvago G. Hibird vector quantization for multiresolution image coding〔J〕. IEEE Trans. on Image Processing, 1997, 6 (5):753~ 758.
  
  “本文中所涉及到的图表、公式、注解等请以PDF格式阅读”
其他文献
[摘要] 针对我国在经济发展中存在的大学生就业问题,本文着重分析目前大学生职业生涯规划的观念和心理因素,重点阐述职业生涯规划的重要性,并对大学生职业生涯规划过程中存在的误区作了一定的分析,强调家长、辅导员在大学生职业生涯规划中的作用,使大学生有一个科学合理的职业生涯规划。   [关键词] 大学生 职业生涯规划    “一个人,拥有一份工作就拥有了一定的资产。但只有那些做他们最擅长的事情的人,才能赢
期刊
[摘要] 高职学生是我们社会生活中的一个重要群体,他们将遍布我国各行各业的生产一线和管理岗位,肩负着社会主义建设事业的重任。加强高职院校学生公民意识对于建设社会主义和谐社会、加强高职院校德育工作、完成高职院校人才培养目标都具有重要意义。本文试论了公民意识的内涵和培养公民意识的重要意义,初探了培养公民意识的方法。  [关键词] 公民意识 高职学生    一、公民意识的内涵  公民是指具有某国国籍并依
期刊
[摘要] 通过对八大山人作品的构思研究,阐释了其抽象与具象、宏观与微观、无形与有形、冷峻与孤傲的美学思想,并提炼概括出其美学思想的核心是“无形”,表达的对象是“人格化”的体现。八大山人把中国画的本质和艺术表达的境界提到一个新高度,真正体现了中国画的笔墨精神和高度的艺术技巧。他的写意气魄与内涵是前无古人的,开创了美术史的一代新风,并作为一种民族艺术而流传下来。  [关键词] 中国画 美学思想 “无形
期刊
[摘要] 针对柳洪水电站H9000计算机监控系统的应用,介绍了设计原则、系统结构、软件功能等,并对实际运行中出现的问题进行了分析,采取了相应的解决办法或处理措施,从而提高了设备的安全运行水平。  [关键词] 柳洪水电站 计算机监控系统 H9000 问题 处理    一、工程概况  柳洪水电站位于凉山彝族自治州美姑县境内美姑河干流,是美姑河干流一库五级电站的第四级,为高水头引水式水电站,引水隧洞长1
期刊
[摘要] 蔡永贵认为汉字中形、音、义三方面都有密切联系的一系列汉字就构成了一个汉字“字族”。 构成汉字“字族”的各个字都是由同一个“母文”孳乳出来的,因而它们之间具有同源关系。根据蔡永贵的这一全新理论来分析《说文解字》中以“央”为母文,外加一系列外化符号而产生的母文外化字就可以看到汉字之间的这种母文类属的关系。  [关键词] 母文 同族字 央  [Abstract] Cai Yonggui con
期刊
[摘要] 通过分析人事档案的社会价值及作用,对搞好企业人事档案管理提出了有益的建议,以充分发挥人事档案在群众工作及生活中的重要功能。  [关键词] 人事档案 管理 利用 建议    1.前言  人事档案工作是一项政治性、原则性、历史性很强的工作,是人事工作的一个重要组成部分,也是国家档案工作的组成部分。它是为贯彻党的路线、方针和政策服务的;是为选贤举能、知人善任服务的;是为进行社会主义现代化建设服
期刊
【摘 要】档案是社会的宝贵财富,管理好档案是维护本单位历史真实面貌的重要工作。医院档案管理是医院管理工作中的一个重要组成部分,档案管理必将渗透在医院建设发展的各个环节中。如何提高档案管理水平,加速档案管理现代化,是档案人员目前面临的一项艰巨任务。本文浅析档案管理中存在的问题并就此提出对策。  【关键词】医院;档案管理;对策  阿拉尔市地处西部边陲,交通落后,医疗条件相对较差,阿拉尔市人民医院是阿
期刊
[摘要] 本文就文山市近几年周边大气污染状况进行了调查,并从污染源、危害和防治措施等方面作了分析,最终得出文山市空气质量总良好,从发展清洁生产,节能减排的角度对今后如何治理好文山市环境提出了一些建议。  [关键词] 大气污染 二氧化硫 氮氧化物    引言  环境问题是由于人类不合理地开发和利用自然源所造成的。触目惊心的环境问题主要有大气污染、水质污染、噪声污染、食品污染、不适当开发利用自然资源这
期刊
[摘要] 本文针对高职园林专业实践教学中存在的问题,提出改革建议,达到提高高职园林专业学生职业技能,促进毕业生顺利就业的目的。  [关键词] 高等职业 园林专业 实践教学 存在问题 改革    随着我国城市化进程的加快,人民对居住环境的生态性、舒适性需求增强,社会对园林专业的的人才需求量越来越大,园林专业发展前景好,园林专业毕业生就业形势好,但也面临着诸多挑战。园林是一个实践性很强的专业,用人单位
期刊
[摘要] 高职院校既是人才培养的主体,又是构建创新型国家的重要力量。走产学研合作的道路,是增强科技创新能力的有效途径。本文结合我校实践,讨论地方高校科技创新建设的优势和所面临的主要问题,探索多层次、多渠道产学研合作的模式与途径。为构建产学研创新平台,增强科技创新能力研究提供借鉴。  [关键词] 产学研合作 科技创新    众所周知,高校不但是我国基础研究和高新技术领域原始创新的主力军,而且是解决国
期刊