第10章图象处理编程工具及简单的 多媒体编程 在前九章,我们主要是介绍一些数字图象处理的基本原理和算法,很多细节 和优化的算法都没有提,所以程序的通用性和效率并不理想。其实有很多优秀的 图象处理编程工具,功能强大,速度很快。在实际的编程中,可以调用它们提供 的功能来满足我们自己的需求,提高了编程效率和代码的正确性。 在这一章里,将介绍图象处理编程工具 Lead tools(OCX)。给出的例程中要 用到 Visual C++(以下简称VC)的 AppWizard和MC的一些特性,不熟悉C++ 的读者可以先看看相关的参考书。 10.1 LeadTools Lead Tools((OCX)是 Lead Technologies公司出品的一款功能强大的图象处理 编程工具,目前的最新版本是Lead80(1997725)。 Lead tools实质上是一个OCX 控件。先来说说什么是OCX控件? 如果你用过 Visual basic或者 Delphi一类的可视化编程工具,那么对控件这 个概念一定不会陌生,就是那些工具条上的小按钮,如 EditBox,Grid, Image Box, imer等等。每个控件都有自己的事件(事件)、方法(方法)和属性(属性)。使用 了控件的编程非常容易。首先,在程序的设计阶段可以设置一些属性,如大小, 位置,标题( caption)等等;在程序运行阶段,可以更改这些属性,还可以针对不 同的事件,调用不同的方法来实现对该控件的控制。控件就好象一块块的积木 程序要做的事只是将这些积木搭起来。控件的最大好处是可以重复使用,甚至可 以在不同的编程语言之间使用,例如你可以在VB中嵌入用ⅴC开发的控件。 控件的本质是微软公司的对象链接和嵌入(OLE)标准。由于它充分利用了面 向对象的优点,使得程序效率得到了很大的提高,从而得到了广泛的应用。国外 有很多公司就是专门制作各种各样控件的。控件的最早形式是以VBX的格式出 现的,后来变成了OCX。由于 Internet的广泛流行,微软公司推出了 ActiveX技 术,就是从OLE发展起来的,加入了WWW上的功能。所以目前最流行的是 ActiveX控件 介绍完了OCX控件的概念,下面我们以 Lead version5.1为例,来看看 Lead tools究竟有哪些功能?LeadⅤ ersion5.1可以在正版 MicroSoft visual C++4 安装光盘中 Msdev samples\ocx leadtools和 Msdev\\red ist下找到,主要是4 个文件,Lead5lndl,Lead32.ocx, Lead. lic, Ltocx hlp。如果你想了解 Lead tools 的最新信息,可以访问以下www网址:htt/www.leadtools.com/。 Lead tools主要有以下几大功能
第 10 章 图象处理编程工具及简单的 多媒体编程 在前九章,我们主要是介绍一些数字图象处理的基本原理和算法,很多细节 和优化的算法都没有提,所以程序的通用性和效率并不理想。其实有很多优秀的 图象处理编程工具,功能强大,速度很快。在实际的编程中,可以调用它们提供 的功能来满足我们自己的需求,提高了编程效率和代码的正确性。 在这一章里,将介绍图象处理编程工具 LeadTools(OCX)。给出的例程中要 用到 Visual C++(以下简称 VC)的 AppWizard 和 MFC 的一些特性,不熟悉 C++ 的读者可以先看看相关的参考书。 10.1 LeadTools LeadTools(OCX)是 Lead Technologies 公司出品的一款功能强大的图象处理 编程工具,目前的最新版本是 Lead8.0(1997.7.25)。LeadTools 实质上是一个 OCX 控件。先来说说什么是 OCX 控件? 如果你用过 Visual Basic 或者 Delphi 一类的可视化编程工具,那么对控件这 个概念一定不会陌生,就是那些工具条上的小按钮,如 EditBox,Grid,ImageBox, Timer 等等。每个控件都有自己的事件(事件) 、方法(方法)和属性(属性)。使用 了控件的编程非常容易。首先,在程序的设计阶段可以设置一些属性,如大小, 位置,标题(caption)等等;在程序运行阶段,可以更改这些属性,还可以针对不 同的事件,调用不同的方法来实现对该控件的控制。控件就好象一块块的积木, 程序要做的事只是将这些积木搭起来。控件的最大好处是可以重复使用,甚至可 以在不同的编程语言之间使用,例如你可以在 VB 中嵌入用 VC 开发的控件。 控件的本质是微软公司的对象链接和嵌入(OLE)标准。由于它充分利用了面 向对象的优点,使得程序效率得到了很大的提高,从而得到了广泛的应用。国外 有很多公司就是专门制作各种各样控件的。控件的最早形式是以.VBX 的格式出 现的,后来变成了.OCX。由于 Internet 的广泛流行,微软公司推出了 ActiveX 技 术,就是从 OLE 发展起来的,加入了 WWW 上的功能。所以目前最流行的是 ActiveX 控件。 介绍完了 OCX 控件的概念,下面我们以 Lead Version5.1 为例,来看看 LeadTools究竟有哪些功能?Lead Version5.1可以在正版MicroSoft Visual C++4.1 安装光盘中 Msdev\samples\ocx\leadtools 和 Msdev\redist\redist 下找到,主要是 4 个文件, Lead51n.dll,Lead32.ocx,Lead.lic,Ltocx.hlp。如果你想了解 LeadTools 的最新信息,可以访问以下 www 网址:http://www.leadtools.com/。 LeadTools 主要有以下几大功能:
(1)对显示设备的全面支持:在显示时,你的程序中无需考虑是哪种显示模 式,如16色还是真彩色。 Lead tools为你做了所有的事。当然你也可以通过设置 参数获得对显示设备更多的控制。你还可以实现自己的调色板 (2)支持多种文件格式:表10.1是 Lead tools所支持的常用文件格式,其中 读表示用 Lead tools能打开的文件格式,写表示 Leat tools能存成的文件格式: 表10.1 Leadon支持的常用文件格式 文件格式读位/象素)写(位/象素) JF:一种常用的neg文8(灰度) 件格式, Lead tools支持YUV 444224(彩色)YUV24(彩色 24(彩色) 400(灰度) JFIF:另一种常用的Jpeg8(灰度) 8(灰度) 文件格式, LeadTools支持 YUV444,422,41l(彩 24(彩色) 24(彩色) 色YUVv40:0(灰度) IFF:Tif件有很多种 l,4,8,16,24,32, 1,4,8,16,24 ead Tools支持常用的几种 包括另一种颜色表示方法 CMYK(LZW压缩)和RLE LZW压缩) MPT 种多页1,4,8,16,24,32, 1,4,8,16,24 MultiPage)的Tif件格式,还包括另一种颜色表示方法 类似于动画Gif CMYK(LZW压缩)和 (LZW压缩) TIFF LZW:采用LZW压 1.4.8.16.24.32 1.8.16.24 缩的Tff格式,使用时要获得 Unisys公司的认可。 FF CCITT Group3:是 种用于二值黑白图(如传真 的Tf压缩格式 FF CCITT Group4:是 种用于二值黑白图(如传真 的Tf压缩格式。比 Group 有更高的压缩比。 TGA (TARGA 8,16,24,32 8,16,24,32 revision公司的一种文件格 式, Lead Tools支持所有未压缩 的,及用RLE算法压缩的TGA
(1) 对显示设备的全面支持:在显示时,你的程序中无需考虑是哪种显示模 式,如 16 色还是真彩色。LeadTools 为你做了所有的事。当然你也可以通过设置 参数获得对显示设备更多的控制。你还可以实现自己的调色板。 (2) 支持多种文件格式:表 10.1 是 LeadTools 所支持的常用文件格式,其中 读表示用 LeadTools 能打开的文件格式,写表示 LeatTools 能存成的文件格式: 表 10.1 LeadTools 支持的常用文件格式 文件格式 读(位/象素) 写(位/象素) JFIF:一种常用的 Jpeg 文 件格式,LeadTools 支持 YUV 4:4:4, 4:2:2, 4:1:1( 彩色)YUV 4:0:0(灰度) 8 (灰度) 24(彩色) 8 (灰度) 24(彩色) JFIF:另一种常用的 Jpeg 文件格式, LeadTools 支 持 YUV 4:4:4, 4:2:2, 4:1:1( 彩 色)YUV 4:0:0(灰度) 8 (灰度) 24(彩色) 8 (灰度) 24(彩色) TIFF:Tiff 文件有很多种, LeadTools 支持常用的几种 1,4,8,16,24,32, 还包括另一种颜色表示方法 CMYK (LZW 压缩) 和 RLE (LZW 压缩) 1, 4, 8, 16, 24 MPT : 一 种 多 页 (MultiPage)的 Tiff 文件格式, 类似于动画 Gif。 1,4,8,16,24,32, 还包括另一种颜色表示方法 CMYK (LZW 压缩) 和 RLE (LZW 压缩) 1, 4, 8, 16, 24 TIFF LZW:采用 LZW 压 缩的 Tiff 格式,使用时要获得 Unisys 公司的认可。 1, 4, 8, 16, 24, 32 1, 8, 16, 24 TIFF CCITT Group 3:是 一种用于二值黑白图(如传真) 的 Tiff 压缩格式。 1 1 TIFF CCITT Group 4:是 一种用于二值黑白图(如传真) 的 Tiff 压缩格式。比 Group 3 有更高的压缩比。 1 1 TGA (TARGA) : Truevision 公司的一种文件格 式,LeadTools 支持所有未压缩 的,及用 RLE 算法压缩的 TGA 8, 16, 24, 32 8, 16, 24, 32
文件。 GHF:由 CompuServe公1,4.8 司定义的一种文件格式,是 tm语言采用的一种文件格 式。要注意的是,使用采用了 LZW压缩的Gf文件时,首先 要获得 Unisys公司的认可。 Photoshop 3.0(PSD) 1.8.24 1.8.24 Adobe公司 PhotoShop3.0所采 用的文件格式 Windows Bitmap(BMP): 1,4,8,24(未压缩) 1.4.8.2 由微软公司定义的文件格式 1,4,8(采用RLE压缩) Windows 8.24 WMF):一种矢量图文件格式 在Word中用到。 PCX:由Zt公司制定1,4,8,24 的一种文件格式,采用了行程 编码 SUN Raster(RAS):t 1. 4.8,24.32 14.8.24.32 Sun UNIX平台上的一种文件 格式 PCD:柯达公司的所有 不能写 PhotoCD文件格式。要注意的 是要有 PCDLIB32DL这个文 件 以上只是常用的文件格式,除此以外还有很多其它的文件格式,感兴趣的读 者可以参考帮助。 (3)图象处理:如二值化、平滑、加噪声、增加对比度、色调、饱和度、亮 度、 Gamma校正、中值滤波、半影调、抖动、橡皮筋、滚动、填充、反色、镜 象、马赛克、浮雕、打印、扫描、拷贝、粘贴、裁剪、缩放、截屏、调色板、直 方图、有关数据库的操作、还有制作幻灯的功能,如淡入、淡出、卷帘等等、真 的很爽。表102是 Version5.1的所有属性、事件、和方法列表,看看有没有你 所需要的功能。以字母顺序排列,其中标P]的表示只有专业级( Professional)和特 殊级( Express)用户才能使用 表10.2 LeadTools的事件、属性、方法 AboutBox方法:显示 Lead Tools的“关于”信息
文件。 GIF:由 CompuServe 公 司定义的一种文件格式,是 html 语言采用的一种文件格 式。要注意的是,使用采用了 LZW 压缩的 Gif 文件时,首先 要获得 Unisys 公司的认可。 1, 4, 8 8 Photoshop 3.0 (PSD) : Adobe 公司 PhotoShop3.0 所采 用的文件格式。 1, 8, 24 1, 8, 24 Windows Bitmap (BMP): 由微软公司定义的文件格式。 1, 4, 8, 24(未压缩) 1, 4, 8(采用 RLE 压缩) 1, 4, 8, 24 Windows Metafile (WMF):一种矢量图文件格式。 在 Word 中用到。 8, 24 8, 24 PCX:由 Zsoft 公司制定 的一种文件格式,采用了行程 编码。 1, 4, 8, 24 1, 4, 8, 24 SUN Raster (RAS) :在 Sun UNIX 平台上的一种文件 格式。 1, 4, 8, 24, 32 1, 4, 8, 24, 32 PCD : 柯 达 公 司 的 PhotoCD 文件格式。要注意的 是要有 PCDLIB32.DLL 这个文 件。 所有 不能写 以上只是常用的文件格式,除此以外还有很多其它的文件格式,感兴趣的读 者可以参考帮助。 (3) 图象处理:如二值化、平滑、加噪声、增加对比度、色调、饱和度、亮 度、Gamma 校正、中值滤波、半影调、抖动、橡皮筋、滚动、填充、反色、镜 象、马赛克、浮雕、打印、扫描、拷贝、粘贴、裁剪、缩放、截屏、调色板、直 方图、有关数据库的操作、还有制作幻灯的功能,如淡入、淡出、卷帘等等、真 的很爽。表 10.2 是 Version5.1 的所有属性、事件、和方法列表,看看有没有你 所需要的功能。以字母顺序排列,其中标[P]的表示只有专业级(Professional)和特 殊级(Express)用户才能使用。 表 10.2 LeadTools 的事件、属性、方法 AboutBox 方法:显示 LeadTools 的“关于”信息
P] Addnoise方法:增加随机噪声 AutoRepain属性:该属性为真时,位图自动重画 AutoScroll属性:该属性为真时,当位图超出窗口范围时,自动出现滚动条 AutoSetRects属性:该属性为真时,自动调整窗口大小 PI Back Color属性:该属性设置位图的背景色 BackErase属性:该属性为真时,擦除控件的背景 [E] Binary Filter方法:对黑色对象进行腐蚀或膨胀操作 Bitmap属性:该属性为位图句柄 Bitmap Bits属性:该属性为每个象素所占的比特数 BitmapHeight属性:该属性为位图的高 BitmapPalette属性:该属性设置调色板中某一项的RGB值 Bitmap width属性:该属性为位图的宽 BitmapXRes属性:该属性为位图的水平分辨率 BitmapY Res属性:该属性为位图的垂直分辨率 田] BitonalScalin属性:设置该属性,以增强二值图的显示效果 BorderStyle属性:该属性为0时,控件周围没有边框,为1时有边框 P] Capture方法:从某一设备上下文指定的矩形区域中获得位图(截屏) Click事件:当用户点击控件时,触发该事件 P] Color Merge方法:融合调色板 P] ColorPlanes属性:该属性为灰度图的调色板数组 Colorres方法:颜色数转换 P] ColorSeparate方法:按照调色板将位图分离成一个个的灰度图 P] Combine方法:将两幅图结合,例如另一幅图是一个边沿检测的滤波器 Contrast方法:增加或减少位图的对比度 copy方法:将位图拷贝至剪贴板 Create Bitmap方法:对位图初始化并分配内存,但不调入任何数据 P] dbAddNew方法:为当前记录集增加一个新的空记录 P] dbCanAppend属性:该属性为真时,表示可以在当前记录集中增加一个记录 PIdb Canrestart属性:该属性为真时,表示可以从数据库中重建记录集 P] db Can Scroll属性:该属性为真时,表示数据源支持 above方法,可以在记录集 中滚 P] db canUpdate属性:该属性为真时,表示可以在当前记录集中增加或者更新 P] db close方法:关闭当前记录集和数据库
[P] AddNoise 方法:增加随机噪声 AutoRepaint 属性:该属性为真时,位图自动重画 AutoScroll 属性:该属性为真时,当位图超出窗口范围时,自动出现滚动条 AutoSetRects 属性:该属性为真时,自动调整窗口大小 [P] Average 方法:平滑 BackColor 属性:该属性设置位图的背景色 BackErase 属性:该属性为真时,擦除控件的背景 [E] BinaryFilter 方法:对黑色对象进行腐蚀或膨胀操作 Bitmap 属性:该属性为位图句柄 BitmapBits 属性:该属性为每个象素所占的比特数 BitmapHeight 属性:该属性为位图的高 BitmapPalette 属性:该属性设置调色板中某一项的 RGB 值 BitmapWidth 属性:该属性为位图的宽 BitmapXRes 属性:该属性为位图的水平分辨率 BitmapYRes 属性:该属性为位图的垂直分辨率 [E] BitonalScaling 属性:设置该属性,以增强二值图的显示效果 BorderStyle 属性:该属性为 0 时,控件周围没有边框,为 1 时有边框 [P] Capture 方法:从某一设备上下文指定的矩形区域中获得位图(截屏) Click 事件:当用户点击控件时,触发该事件 [P] ColorMerge 方法:融合调色板 [P] ColorPlanes 属性:该属性为灰度图的调色板数组 ColorRes 方法:颜色数转换 [P] ColorSeparate 方法:按照调色板将位图分离成一个个的灰度图 [P] Combine 方法:将两幅图结合,例如另一幅图是一个边沿检测的滤波器 Contrast 方法:增加或减少位图的对比度 Copy 方法:将位图拷贝至剪贴板 CreateBitmap 方法:对位图初始化并分配内存,但不调入任何数据 [P] dbAddNew 方法:为当前记录集增加一个新的空记录 [P] dbCanAppend 属性:该属性为真时,表示可以在当前记录集中增加一个记录 [P] dbCanRestart 属性:该属性为真时,表示可以从数据库中重建记录集 [P] dbCanScroll 属性:该属性为真时,表示数据源支持 dbMove 方法,可以在记录集 中滚 动 [P] dbCanUpdate 属性:该属性为真时,表示可以在当前记录集中增加或者更新一个记 录 [P] dbClose 方法:关闭当前记录集和数据库
P] db CurrentRecord属性:记录集中当前记录号 P] dbDelete方法:删除当前记录 P] dbEdit方法:为更新当前记录做准备 P] dbEditMode属性:指示当前记录的编辑模式,如只读,可编辑,可添加 P] dbIsboF属性:指示是否到了最前面的记录 dbed属性:指示当前记录是否已经被删除 P] abIseo属性:指示是否到了最后面的记录 P] dblsOpen属性:指示是否和一个数据库相连 DblClick事件:当用户双击控件时,触发该事件 P] dbload Bits属性:指示从数据库中调入位图时,每个象素所占的比特数,为0时, 和原来位图的颜色数保持一致 P] blOcking Mode属性:当对数据库中已有记录进行更新时,该属性用来指定记录锁 定模式 P] abOve方法:将当前记录移动到指定位置 P] dbmovef irst方法:选定记录集中的第一个记录 P] dbMovelast方法:选定记录集中的最后一个记录 db MoveNext方法:选定记录集中的下一个记录 P] dbMove Prev方法:选定记录集中的前一个记录 P] dbopen方法:在ODBC类型的数据库中打开一个记录集 P] dbRecordCount属性:指示记录集中的记录数 P] dbRequery方法:从数据库中重建记录集 P] dbupdate方法:更新数据库(当调用 dbAddNew或者dEdt后) [E] Deskew方法:旋转位图使其变正,常用于扫描图象的自动纠斜 [E] Despeckle方法:去除位图中的小斑点 DstClipHeight属性:指定目标剪切矩形的高度 Dst ClipLeft属性:指定目标剪切矩形的左坐标 Dst ClipTop属性:指定目标剪切矩形的上坐标 Dst Clipwidth属性:指定目标剪切矩形的宽度 Dst height属性:指定目标矩形的高度 DstLeft属性:指定目标矩形的左坐标 Dst Top属性:指定目标矩形的上坐标 Dst width属性:指定目标矩形的宽度 P] Emboss方法:制作浮雕效果 Enabled属性:指定控件是否使能 EnableMethodErrors属性:指示控件是否导致了系统错误
[P] dbCurrentRecord 属性:记录集中当前记录号 [P] dbDelete 方法:删除当前记录 [P] dbEdit 方法:为更新当前记录做准备 [P] dbEditMode 属性:指示当前记录的编辑模式,如只读,可编辑,可添加 [P] dbIsBOF 属性:指示是否到了最前面的记录 [P] dbIsDeleted 属性:指示当前记录是否已经被删除 [P] dbIsEOF 属性:指示是否到了最后面的记录 [P] dbIsOpen 属性:指示是否和一个数据库相连 DblClick 事件:当用户双击控件时,触发该事件 [P] dbLoadBits 属性:指示从数据库中调入位图时,每个象素所占的比特数,为 0 时, 和原来位图的颜色数保持一致 [P] dbLockingMode 属性:当对数据库中已有记录进行更新时,该属性用来指定记录锁 定模式 [P] dbMove 方法:将当前记录移动到指定位置 [P] dbMoveFirst 方法:选定记录集中的第一个记录 [P] dbMoveLast 方法:选定记录集中的最后一个记录 [P] dbMoveNext 方法:选定记录集中的下一个记录 [P] dbMovePrev 方法:选定记录集中的前一个记录 [P] dbOpen 方法:在 ODBC 类型的数据库中打开一个记录集 [P] dbRecordCount 属性:指示记录集中的记录数 [P] dbRequery 方法:从数据库中重建记录集 [P] dbUpdate 方法:更新数据库(当调用 dbAddNew 或者 dbEdit 后) [E] Deskew 方法:旋转位图使其变正,常用于扫描图象的自动纠斜 [E] Despeckle 方法:去除位图中的小斑点 DstClipHeight 属性:指定目标剪切矩形的高度 DstClipLeft 属性:指定目标剪切矩形的左坐标 DstClipTop 属性:指定目标剪切矩形的上坐标 DstClipWidth 属性:指定目标剪切矩形的宽度 DstHeight 属性:指定目标矩形的高度 DstLeft 属性:指定目标矩形的左坐标 DstTop 属性:指定目标矩形的上坐标 DstWidth 属性:指定目标矩形的宽度 [P] Emboss 方法:制作浮雕效果 Enabled 属性:指定控件是否使能 EnableMethodErrors 属性:指示控件是否导致了系统错误
P] EnableProgressEvent属性:指示控件是否产生一个进度状态的事件,用来指示已经 完成的百分比 P] Enable Twain Event属性:为真时,表示支持多页扫描,每扫一页产生一个 Twain 事件 Fill方法:用指定颜色填充位图 Flip方法:上下反转位图 ForceRepaint方法:重画位图 Fore palette属性:当为真时,将使用控件的调色板作为前景调色板 P] GammaCorrect方法: Gamma校正 Get BitmapDC方法:获得位图的设备上下文 GetClientDC方法:获得控件客户区的设备上下文 P] GetDDB方法:从控件位图中获得设备相关位图 PGDB方法:从控件位图中获得设备无关位图 GetFilelnfo方法:获得指定文件的信息 P] Gethistogram方法:获得颜色直方图 GetPalette方法:获得调色板 P] GetPicture方法:返回一个pure的对象,是位图的一个拷贝 Grayscale方法:将彩色图转成256级灰度图 Halftone方法:半影调效果 P] HistoContrast方法:使用直方图指定中间亮度,用以增加图象的对比度 P] HistoEqualize方法:直方图均衡化 P] Histogram Table属性:得到指定强度级别的颜色出现的次数 P]Hue方法:改变图象色调 hWnd属性:得到控件的窗口句柄 InfoBits属性:得到指定图象文件每个象素所占的比特数 InfoCompress属性:得到指定图象文件所用的压缩方法 InfoFormat属性:得到指定图象文件的格式 InfoHeight属性:得到指定图象文件的高度 nfoPage属性:对于多页图象文件,指示出该页的页号 P] InfoPCDRes属性:用来指示 PhotocD文件格式的分辨率 InfoSize Disk属性:得到文件大小 InfoSize Mem属性:得到要调入该文件,其位图所占的内存大小 Infowidth属性:得到指定图象文件的宽度 Intensity方法:改变图象的亮度 P] Intensity Detect方法:用来检测指定范围内的颜色
[P] EnableProgressEvent 属性:指示控件是否产生一个进度状态的事件,用来指示已经 完成的百分比 [P] EnableTwainEvent 属性:为真时,表示支持多页扫描,每扫一页产生一个 TwainPage 事件 Fill 方法:用指定颜色填充位图 Flip 方法:上下反转位图 ForceRepaint 方法:重画位图 ForePalette 属性:当为真时,将使用控件的调色板作为前景调色板 [P] GammaCorrect 方法:Gamma 校正 GetBitmapDC 方法:获得位图的设备上下文 GetClientDC 方法:获得控件客户区的设备上下文 [P] GetDDB 方法:从控件位图中获得设备相关位图 [P] GetDIB 方法:从控件位图中获得设备无关位图 GetFileInfo 方法:获得指定文件的信息 [P] GetHistogram 方法:获得颜色直方图 GetPalette 方法:获得调色板 [P] GetPicture 方法:返回一个 Picture 的对象,是位图的一个拷贝 Grayscale 方法:将彩色图转成 256 级灰度图 Halftone 方法:半影调效果 [P] HistoContrast 方法:使用直方图指定中间亮度,用以增加图象的对比度 [P] HistoEqualize 方法:直方图均衡化 [P] HistogramTable 属性:得到指定强度级别的颜色出现的次数 [P] Hue 方法:改变图象色调 hWnd 属性:得到控件的窗口句柄 InfoBits 属性:得到指定图象文件每个象素所占的比特数 InfoCompress 属性:得到指定图象文件所用的压缩方法 InfoFormat 属性:得到指定图象文件的格式 InfoHeight 属性:得到指定图象文件的高度 InfoPage 属性:对于多页图象文件,指示出该页的页号 [P] InfoPCDRes 属性:用来指示 PhotoCD 文件格式的分辨率 InfoSizeDisk 属性:得到文件大小 InfoSizeMem 属性:得到要调入该文件,其位图所占的内存大小 InfoWidth 属性:得到指定图象文件的宽度 Intensity 方法:改变图象的亮度 [P] IntensityDetect 方法:用来检测指定范围内的颜色
Invert方法:反色,制作底片效果 Key Down事件:当用户按下键盘时,触发该事件 Key Press事件:当用户按下并抬起键盘时,触发该事件 KsUp事件:当用户拍起键盘时,触发该事件 Load方法:调入一个图象文件到位图中 P] LoadStamp方法:在JFIF或者 LEAD CMP压缩文件中调入一幅 Thumbnail图象 P] Median方法:中值滤波 P] Mosaic方法:马赛克效果 事件:当鼠标按钮按下时,触发该事件 Mouselcon属性:用户定制的鼠标光标形状 Mouse move事件:当鼠标移动时,触发该事件 Mouse Pointer属性:已有的鼠标光标形状(如沙漏,箭头等等) MouseUp事件:当鼠标按钮抬起时,触发该事件 Paint事件:控件的某一部分需要重画时,触发该事件 Paint Dither属性:指定抖动方法,是顺序的还是误差传递的 P] PaintEffect属性:指定显示效果,如卷帘,淡入,淡出 Paint Palette属性:当用只能显示256色或更低的设备显示高颜色数位图时,用来指定 调色板的模式,是用固定的调色板,还是用最佳调色板 P] Paint Whileload属性:当为真时,调入图象的同时就在屏幕上显示,当为假时,全 部调入后才在屏幕上显示 Paste方法:将图象数据从剪切板粘贴到指定的位图 P] PCDRes属性:指定PCD文件的分辨率 P] Posterize方法:增加海报效果,即将颜色数重新量化成较少的级别 PrintEd方法:结束打印工作 Print Start方法:开始打印工作 P] Progressstatus事件:进度事件,用来得到已经完成的百分比 Release BitmapDC方法:释放位图设备上下文 ReleaseclientDc方法:释放客户区设备上下文 P] Remaplntensity方法:使用一个查找表来改变位图的颜色值 P] Remap Table属性: Remaplntensity方法中用到的查找表 Render方法:在任何设备上下文中打印或者显示图象 Resize事件:当控件第一次显示或者大小改变时触发该事件 Reverse方法:水平反转位图 Rotate方法:旋转位图 Rubber BandHeight属性:橡皮筋的高度
Invert 方法:反色,制作底片效果 KeyDown 事件:当用户按下键盘时,触发该事件 KeyPress 事件:当用户按下并抬起键盘时,触发该事件 KeyUp 事件:当用户抬起键盘时,触发该事件 Load 方法:调入一个图象文件到位图中 [P] LoadStamp 方法:在 JFIF 或者 LEAD CMP 压缩文件中调入一幅 Thumbnail 图象 [P] Median 方法:中值滤波 [P] Mosaic 方法:马赛克效果 MouseDown 事件:当鼠标按钮按下时,触发该事件 MouseIcon 属性:用户定制的鼠标光标形状 MouseMove 事件:当鼠标移动时,触发该事件 MousePointer 属性:已有的鼠标光标形状(如沙漏,箭头等等) MouseUp 事件:当鼠标按钮抬起时,触发该事件 Paint 事件:控件的某一部分需要重画时,触发该事件 PaintDither 属性:指定抖动方法,是顺序的还是误差传递的 [P] PaintEffect 属性:指定显示效果,如卷帘,淡入,淡出 PaintPalette 属性:当用只能显示 256 色或更低的设备显示高颜色数位图时,用来指定 调色板的模式,是用固定的调色板,还是用最佳调色板 [P] PaintWhileLoad 属性:当为真时,调入图象的同时就在屏幕上显示,当为假时,全 部调入后才在屏幕上显示 Paste 方法:将图象数据从剪切板粘贴到指定的位图 [P] PCDRes 属性:指定 PCD 文件的分辨率 [P] Posterize 方法:增加海报效果,即将颜色数重新量化成较少的级别 PrintEnd 方法:结束打印工作 PrintStart 方法:开始打印工作 [P] ProgressStatus 事件:进度事件,用来得到已经完成的百分比 ReleaseBitmapDC 方法:释放位图设备上下文 ReleaseClientDC 方法:释放客户区设备上下文 [P] RemapIntensity 方法:使用一个查找表来改变位图的颜色值 [P] RemapTable 属性:RemapIntensity 方法中用到的查找表 Render 方法:在任何设备上下文中打印或者显示图象 Resize 事件:当控件第一次显示或者大小改变时触发该事件 Reverse 方法:水平反转位图 Rotate 方法:旋转位图 RubberBandHeight 属性:橡皮筋的高度
Rubber BandLeft属性:橡皮筋的左坐标 Rubber Band Top属性:橡皮筋的上坐标 Rubber band Visible属性:为真时,橡皮筋可见 Rubber Band width属性:橡皮筋的宽度 P] Saturation方法:改变图象的饱和度 Save方法:将图象存成文件 P] Save WithStamp方法:将位图存成包括一幅 Thumbnail图象的JPEG或者LEAD 文件 Scaleheight属性:控件客户区高度 ScaleLeft属性:控件客户区左坐标 ScaleMode属性:控件的丈量单位,如厘米,象素,英寸等等 Scale Top属性:控件客户区上坐标 Scalewidtl属性:控件客户区宽度 Scroll事件:当滚动时,触发该事件 P] SetDDB方法:将一设备相关位图拷贝,并将该拷贝指派到控件上 P] SetDIB方法:将一设备无关位图拷贝,并将该拷贝指派到控件上 SetDstClipRect方法:指定目标剪切矩形 SetDstRect方法:指定目标矩形 P] SetPicture方法:将一 Picture对象拷贝,并将该拷贝指派到控件上 SetRubber Band Rect方法:指定橡皮筋矩形 SetSrcClipRect方法:指定源剪切矩形 Setsrcrect方法:指定源矩形 P] Sharpen方法:锐化 P] Shear方法:错切 Size方法:放缩 P] SpatialFilter方法:用指定的滤波器处理,如 LAPLACE, SOBEL, EMBOSS等等 SrcClipHeight属性:指定源剪切矩形的高度 SrcClipleft属性:指定源剪切矩形的左坐标 SrcClip Top属性:指定源剪切矩形的上坐标 SrcClipWidth属性:指定源剪切矩形的宽度 SrcHeight属性:指定源矩形的高度 SrcLeft属性:指定源矩形的左坐标 SrcTop属性:指定源矩形的上坐标 SrcWidth属性:指定源矩形的宽度 P] StretchIntensity方法:对比度扩展
RubberBandLeft 属性:橡皮筋的左坐标 RubberBandTop 属性:橡皮筋的上坐标 RubberBandVisible 属性:为真时,橡皮筋可见 RubberBandWidth 属性:橡皮筋的宽度 [P] Saturation 方法:改变图象的饱和度 Save 方法:将图象存成文件 [P] SaveWithStamp 方法:将位图存成包括一幅 Thumbnail 图象的 JPEG 或者 LEAD CMP 文件 ScaleHeight 属性:控件客户区高度 ScaleLeft 属性:控件客户区左坐标 ScaleMode 属性:控件的丈量单位,如厘米,象素,英寸等等 ScaleTop 属性:控件客户区上坐标 ScaleWidth 属性:控件客户区宽度 Scroll 事件:当滚动时,触发该事件 [P] SetDDB 方法:将一设备相关位图拷贝,并将该拷贝指派到控件上 [P] SetDIB 方法:将一设备无关位图拷贝,并将该拷贝指派到控件上 SetDstClipRect 方法:指定目标剪切矩形 SetDstRect 方法:指定目标矩形 [P] SetPicture 方法:将一 Picture 对象拷贝,并将该拷贝指派到控件上 SetRubberBandRect 方法:指定橡皮筋矩形 SetSrcClipRect 方法:指定源剪切矩形 SetSrcRect 方法:指定源矩形 [P] Sharpen 方法:锐化 [P] Shear 方法:错切 Size 方法:放缩 [P] SpatialFilter 方法:用指定的滤波器处理,如 LAPLACE,SOBEL,EMBOSS 等等 SrcClipHeight 属性:指定源剪切矩形的高度 SrcClipLeft 属性:指定源剪切矩形的左坐标 SrcClipTop 属性:指定源剪切矩形的上坐标 SrcClipWidth 属性:指定源剪切矩形的宽度 SrcHeight 属性:指定源矩形的高度 SrcLeft 属性:指定源矩形的左坐标 SrcTop 属性:指定源矩形的上坐标 SrcWidth 属性:指定源矩形的宽度 [P] StretchIntensity 方法:对比度扩展
rim方法:在指定的矩形区域内剪切图象 TwainAcquire方法:扫描( Twain标准) P] Twain Page事件:当进行多页扫描时,每扫完一页触发该事件( Twain标 Twain Select方法:选择扫描仪( Twain标准) P] Underlay方法:将两幅结合起来,使得一幅图做另一幅图的文理 User Palette属性:指定调色板中的某一项颜色 Ⅴ ersion Date属性:版本日期 VersionLevel属性:版本级别( EXPRESS或者 PROFESSIONAI Version Major属性:主版本号 Version Minor属性:副版本号 Version Product属性:当前版本的全名 Ⅴ ersion Time属性:版本时间 (4)源代码例子: Lead Tools的帮助做的特别好,这一点非常吸引人。每一个 事件、方法、属性都有很详细的说明,后面都附有一个详细的例子。而且例子有 很多种版本,如VC版、VB版、 Delphi版、 Access版,这样使用不同编程语言 的程序员都能从中获得直接的帮助 好了,介绍了这么多 Lead Tools的功能,下面我们给出一个最简单的利用 Lead Tools例子,其功能是显示任意一幅图(当然是Lead能支持的文件格式),图 被缩放成和控件一样大小。 例子101用Lead显示一幅图 步骤1:打开VC++5.0,用 MFC App Wizard(exe)新建一个 Project,起名为 TestLead。要注意的是在 StepI中,选定" Dialog based",step2中,选定" ActiveX Controls",其它过程全部采用缺省值 步骤2:把Lead控件添加到工具条中,方法是:(1)打开 Project→> Add to Project→> Components and Controls菜单(其它的ⅤC版本,如40、4.1、4.2,为 Insert-> Component.菜单),出现对话框,选择“ Registered ActiveX Controls”那 个目录(其它的VC版本为 OLE Controls”那一页):(2)选中" Lead Std Contro"那 项,如图10.1所示。然后按下 Insert菜单即可;
Trim 方法:在指定的矩形区域内剪切图象 TwainAcquire 方法:扫描(Twain 标准) [P] TwainPage 事件:当进行多页扫描时,每扫完一页触发该事件(Twain 标准) TwainSelect 方法:选择扫描仪(Twain 标准) [P] Underlay 方法:将两幅结合起来,使得一幅图做另一幅图的文理 UserPalette 属性:指定调色板中的某一项颜色 VersionDate 属性:版本日期 VersionLevel 属性:版本级别(EXPRESS 或者 PROFESSIONAL) VersionMajor 属性:主版本号 VersionMinor 属性:副版本号 VersionProduct 属性:当前版本的全名 VersionTime 属性:版本时间 (4) 源代码例子:LeadTools 的帮助做的特别好,这一点非常吸引人。每一个 事件、方法、属性都有很详细的说明,后面都附有一个详细的例子。而且例子有 很多种版本,如 VC 版、VB 版、Delphi 版、Access 版,这样使用不同编程语言 的程序员都能从中获得直接的帮助。 好了,介绍了这么多 LeadTools 的功能,下面我们给出一个最简单的利用 LeadTools 例子,其功能是显示任意一幅图(当然是 Lead 能支持的文件格式),图 被缩放成和控件一样大小。 [例子 10.1] 用 Lead 显示一幅图 步骤 1:打开 VC++5.0,用 MFC AppWizard (exe)新建一个 Project,起名为 TestLead。要注意的是在 Step1 中,选定"Dialog based",Step2 中,选定"ActiveX Controls",其它过程全部采用缺省值。 步骤 2:把 Lead 控件添加到工具条中,方法是:(1)打开 Project->Add To Project->Components and Controls 菜单(其它的 VC 版本,如 4.0、4.1、4.2,为 Insert->Component…菜单),出现对话框,选择“Registered ActiveX Controls”那 个目录(其它的 VC 版本为”OLE Controls”那一页);(2)选中"Lead Std Control"那一 项,如图 10.1 所示。然后按下 Insert 菜单即可;
Choose a component to insert into your project 搜索①:□t4 ActiveX Control:当 图 Crystal Report Control 图 Direct3D Class 四日0 图 Inage Control a线A DPInageMelper Control Microsoft IT Pc Lesd Control (8.0) Mi cresent Forn b Lead std Control Microsoft Forms 文件名: Lead Std ControlInk Lead Std Control Close 日 Path to control. LEAD32OCX 图102 图101Lead控件 工具条 (3)如果没有该项,找到lead32ocx文件所在的目录(一般为95的系统目录) 选择该文件,按下 Insert按钮即可(其它ⅤC版本的操作方法是:按下 Customize 菜单,出现一个新的对话框,按下 Import菜单,找到lead32ocx文件所在的目录, 选择该文件,按下 Import按钮,再按下OK按钮,然后做(2)所做的工作即可)。 按下 Close按钮,关闭 Component对话框。插入该控件后,会出现一个对话框, 提示你新增加了两个类: Clead和 Cpicture,选择Ok。打开对话框资源,选择ID 为 IDD TESTLEAD DIALOG的对话框,这时可以看到该控件已经添加到工具 条中,如图102所示。 步骤3:将Lead控件从工具条拖到对话框中,设置好合适的大小,右击该 控件,选择 Property菜单,设置其ID属性为 IDC LEADI,删除“TODO: Place form controls on this dialog”的静态文本 步骤4:按Ctrl+w,出现 Class Wizard对话框,选择 Member variables那 页,为该ID添加一个变量 m lead 1, Category为 Control, Variable Type为 Clead 步骤5:编辑 TestLead Dlg cpp文件中的 OnInitDialogO函数,在∥TODO Add extra initialization here后加入如下的代码: m Lead 1. Load ("c: test jpg,0,0); m Lead 1 Set AutoScrolI(TRUE) m Lead 1. SetDstRect(0,0, m Lead 1. Get Scale Width, m Lead 1. Get ScaleHeighto) m Lead 1. SetDstClipRect(o,0, m Lead 1, Get Scale Width Lead 1. GetScale Height() m Lead 1 Set AutoRepaint(FALSE)
图 10.1 Lead 控件 图 10.2 工具条 (3)如果没有该项,找到 lead32.ocx 文件所在的目录(一般为 95 的系统目录), 选择该文件,按下 Insert 按钮即可(其它 VC 版本的操作方法是:按下 Customize 菜单,出现一个新的对话框,按下 Import 菜单,找到 lead32.ocx 文件所在的目录, 选择该文件,按下 Import 按钮,再按下 OK 按钮,然后做(2)所做的工作即可)。 按下 Close 按钮,关闭 Component 对话框。插入该控件后,会出现一个对话框, 提示你新增加了两个类:Clead 和 Cpicture,选择 Ok。打开对话框资源,选择 ID 为 IDD_TESTLEAD_DIALOG 的对话框,这时可以看到该控件已经添加到工具 条中,如图 10.2 所示。 步骤 3:将 Lead 控件从工具条拖到对话框中,设置好合适的大小,右击该 控件,选择 Property 菜单,设置其 ID 属性为 IDC_LEAD1,删除“TODO: Place form controls on this dialog”的静态文本。 步骤 4:按 Ctrl+w,出现 ClassWizard 对话框,选择 Member Variables 那一 页,为该 ID 添加一个变量 m_Lead1,Category 为 Control,Variable Type 为 Clead。 步骤 5:编辑 TestLeadDlg.cpp 文件中的 OnInitDialog()函数,在 // TODO: Add extra initialization here 后加入如下的代码: m_Lead1.Load(“c:\\test.jpg”,0,0); m_Lead1.SetAutoScroll(TRUE); m_Lead1.SetDstRect(0,0,m_Lead1.GetScaleWidth(), m_Lead1.GetScaleHeight()); m_Lead1.SetDstClipRect(0,0,m_Lead1.GetScaleWidth(), m_Lead1.GetScaleHeight()); m_Lead1.SetAutoRepaint(FALSE);