基于VB6.0的数字图像编程实例
日期:2007年5月1日 作者: 查看:[大字体 中字体 小字体]-
前言
随着编程技术的发展,如何在程序中处理图像已经是所有编程爱好者不得不面对的一个重要问题,笔者在天极网上曾发表了多篇关于数字图像处理的文章,但都是基于Visual C++开发平台的,对于习惯于使用Visual Basic的读者朋友来说,不能不算是一个遗憾。网上有很多朋友关心如何在Viusal Basic环境下进行一些基本的图像处理,如位图文件数据的读取、显示、实现特效等,为了满足上述这些朋友们的需求,笔者通过这篇文章介绍一下如何在Visual Basic环境下实现图像文件的一些基本操作,希望可以对广大喜爱Visual Basic编程的朋友起到入门的作用。
一、BMP位图的DIB的结构
在 Windows 3.0 以前,Windows系统用的是DDB(设备有关位图),DDB没有调色板,显示的颜色依赖硬件,处理色彩很不方便。所以微软从Windows 3.0以后重新定义了BMP文件格式,使其支持设备无关位图--也就是DIB,其结构主要由以下几个部分构成:1)BITMAPFILEHEADER:BMP文件头;2)DIB BITMAPINFOHEADER:BMP位图文件信息头;3)RGBQUAD[]:BMP位图的调色板;4)位图数据块。BMP文件的结构示意图如图一所示:
图一、位图文件的结构示意图
(1)BMP位图文件头BITMAPFILEHEADER的VB声明如下:
Type BITMAPFILEHEADER
bfType(0 to 1) As Byte
bfSize As Long
bfReserved1 As Integer
bfReserved2 As Integer
bfOffBits As Long
End Type
上述结构中,参数bfType 指示文件的类型,对于位图文件来说,它必须是"BM";参数bfSize指示位图文件的大小,它包括BITMAPFILEHEADER的长度;参数bfReserved1、bfReserved2目前保留,必须等于0;参数bfOffBits表示位图数据距离文件头的偏移字节数。 (2)文件信息头BITMAPINFOHEADER结构在VB中声明如下:
Type BITMAPINFOHEADER
biSize As Long
biWidth As Long
biHeight As Long
biPlanes As Integer
biBitCount As Integer
biCompression As Long
biSizeImage As Long
biXPelsPerMeter As Long
biYPelsPerMeter As Long
biClrUsed As Long
biClrImportant As Long
End Type
上述结构中,参数biSize表示BITMAPINFOHEADER结构的大小;参数biWidth表示位图的高度,单位是像素;参数biHeight 位图的宽度,单位是像素;参数biPlanes 设备的位平面数,现在都是1;参数biBitCount 图像的颜色位数,1表示单色位图、4表示16色位图、8表示256色位图、24表示真彩色位图、32表示32位位图,默认情况下Windows不会处理最高8位,可以将它作为自己的Alpha通道;参数biCompression表示图像的压缩方式,BI_RGB表示无压缩、BI_RLE8表示行程编码压缩;参数biSizeImage表示实际的位图数据所占字节;参数biXPelsPerMeter表示目标设备的水平分辨率,单位是每米的像素个数;参数biYPelsPerMeter表示目标设备的垂直分辨率,单位是每米的像素个数;参数biClrUsed表示使用的颜色数(当biBitCount等于1、4、8时才有效),如果该项为0,表示颜色数为2^biBitCount;参数biClrImportant# 重要的颜色数,如果该项为0,表示所有颜色都是重要的。
(3)位图调色板
调色板实际上是一个数组,它的元素的个数由biBitCount和biClrUsed决定,对于位图文件来说,只有biBitCount等于1、4、8时才有调色板,它们对应的调色板的元素个数分别是2、16、256。调色板结构在VB中的声明如下:
- [1] [2] [3] 下一页
-
- 基于VB6.0的数字图像编程实例 相关文章:
- ·基于VB6.0的数字图像编程实例
- 基于VB6.0的数字图像编程实例 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:如何用VB在桌面建立快捷方式
精品推荐
热点TOP10
- ·VB表格控件总览与例程分析
- ·VB+Access设计图书管理系统
- ·用VB6.0制作画图板
- ·给VB控件PictureBox加滚动条的方法
- ·VB编程之路-如何让界面美化
- ·用MsFlexGrid控件显示数据库中的记录
- ·如何用VB程序来播放WAV文件
- ·CreatePolygonRgn
- ·用VB实现井字游戏
- ·利用硬盘序列号计算软件注册码
- ·串口通讯及其在VB平台下的实现
- ·VB中用Multimedia MCI控件开发多媒体应用
- ·在VFP、VB应用程序中激活鼠标功能
- ·VB.NET实现窗体图标最小化到状态栏
- ·VB 9新特性—保留与舍去了什么?
- ·VB基础学习:编码规范
- ·VB设计有语音报时和报警功能的闹钟
- ·用VB6分离出文本框的单词
- ·用VB实现Win2000用户限时登录
- ·VB应用程序中实现“查找和替换”功能
特别推荐
- ·VB表格控件总览与例程分析
- ·用VB6.0制作画图板
- ·VB打造超酷个性化菜单(六)
- ·MSHFlexGrid 控件的应用
- ·Visual Basic 控件简介
- ·利用硬盘序列号计算软件注册码
- ·计算机等级考试二级VB常用算法:排序
- ·用diskid.dll和disk32.dll获得硬盘序列号
- ·VB6中使用Winsock穿越各种代理的实现
- ·在VFP、VB应用程序中激活鼠标功能
- ·vb基础(打印问题)
- ·想用就用,VB基础代码
- ·运用多媒体WAV文件格式二三例
- ·VB基础学习:编码规范
- ·VB实现程序的隐形
- ·使用.NET Framework从VB6中访问事件日志
- ·怎样把VC++代码转换成VB代码
- ·如何用VB程序来播放WAV文件
- ·VB 实用函数集
- ·用VB制作RM压缩软件
