资源描述:
《vb图形图象处理(05-07)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VB图形图象处理技术北京交通大学理学院黄晓鸣电话:51682052Email:xmhuang@science.njtu.edu.cn2021/8/102Chap5图像的浏览与控制图像的浏览与控制是图像处理的重要部分,VB的PictureBox和Image等控件对图像的简单浏览和控制提供了支持。本章主要介绍几种图像浏览的特殊效果、图像文件格式的转换、图像的复制及旋转缩放等功能的实现。2021/8/103一浏览各种图像文件VB的PictureBox和Image等控件对图像进行的简单浏览和控制,而且支
2、持包括bmp、jpg、gif在内的多种图像格式,但不支持图像的滚动控制等其它效果,但可以通过程序控制实现使用滚动条控制图像、显示透明位图以及多种特殊效果的图像显示。5.1.1图像滚动控制利用图像漫游技术,对一幅图首先建立一个逻辑坐标系,然后根据当前位置在用户坐标系中显示不同的区域,用户坐标系一般为图像显示的整个区域的大小。示例2021/8/1045.1.2图片特技显示滚动、拉近、百叶窗和马赛克等效果。利用VB的PictureBox控件可实现多种特殊效果。利用PictureBox控件的PaintP
3、icture图形方法可以绘制图片,原型为:Object.PaintPicturepicture,x1,y1,w1,h1,x2,y2,w2,h2,opcodeObject:显示图片的容器Picture是将要绘制到Object的图形源x1,y1,w1,h1指定绘制的目标坐标、宽度及高度x2,y2,w2,h2指定剪贴区内(源)的坐标、宽度及高度Opcode定义绘制到目标时对图片做的位操作示例1示例22021/8/1055.1.3图像平铺效果用一幅小图去覆盖一个窗口或者窗口的一部分,这些图以原来的尺寸作
4、为背景排列在要覆盖的窗口上,这种技术叫平铺。VB实现平铺需使用WindowsAPI和一些图形技术,需使用两个API函数Bitblt和GetDC。PublicDeclareFunctionBitBltLib"gdi32"Alias"BitBlt"(ByValhDestDCAsLong,ByValxAsLong,ByValyAsLong,ByValnWidthAsLong,ByValnHeightAsLong,ByValhSrcDCAsLong,ByValxSrcAsLong,ByValySrcAs
5、Long,ByValdwRopAsLong)AsLongBitBlt函数是API函数中进行图像处理最常用的函数,可以方便地显示各种图像文件,也可以实现特殊显示效果。示例2021/8/1065.1.4雨滴效果利用BitBlt、CreateCompatileDC、SelectObject和DeleteDC等函数实现显示图片的雨滴效果。示例2021/8/107二图像文件格式转换计算机技术的发展,BMP、GIF和JPEG等图像格式已成为主流。5.2.1几种图像文件格式介绍不同图像格式有着不同的数据存储方
6、法,因而产生不同的文件大小。2021/8/108BMP文件格式一种与硬件设备无关的图像文件格式,使用非常广泛采用位映射存储格式,除了图像深度可选外不采用其它任何压缩,占用空间很大文件深度可为1bit、4bit、8bit及24bit扫描方式为从左到右、从下到上的顺序在Windows环境中运行的图形图像软件均支持文件由三部分构成:位图文件头数据结构:类型、宽、高、压缩方法等位图信息数据结构:位图实际显示内容调色板:颜色定义:P2022021/8/109GIF文件格式图像互换格式(GraphicsIn
7、terchangeFormat),是一种基于LZW算法的连续色调的无损压缩格式。压缩率一般在50%,目前几乎所有软件都支持文件数据是经过压缩的,而且采用了可变长度压缩算法(支持1-8位,最多256种色彩)在一个GIF文件中可以存多幅彩色图像,如果将存在一个文件中的多幅图像逐幅读出来并显示在屏幕上就可构成一种最简单的动画。GIF解码较快,采用隔行存放GIF图像,在边解码边显示时可分成四遍扫描,明显提高显示速度。2021/8/1010JPEG文件格式图像联合专家组(JointPhotographic
8、ExpertsGroup),制定的一种很常用的图像文件格式。一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。压缩比率与图像品质之间的平衡点应用非常广泛,目前各类浏览器均支持,因为其有着文件长度小,下载速度快的特点。2021/8/10115.2.2彩色位图转换从每个像素的颜色中提取其R、G、B分量的值,然后转换为对应的灰度分量。红色分量:RedValue=rgbColorAnd&HFF&绿色分量:GreenValue=(rgbColo