网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
VC下的BMP文件的显示方法
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式

1  BMP 文件的结构
在进行图像处理程序设计时,常用到Windows 位图文件(即BMP 文件) 。Windows 位图
是映射到显示像素的位阵列,它有两种类型: GDI 位图和DIB。GDI 位图又称DDB ,是设备相
关的,其位的排列取决于显示设备,而DIB 是设备无关的,它具更强的灵活性与完整的图像数
据、压缩方式等定义,既可以存放在于内存也可以以文件形式保存在磁盘上(BMP 文件) 。对
于内存中DIB ,它包含两部分信息: (1) 位图信息(BITMAPINFO) ,包括位图信息头和颜色表;
(2) 位图数据,而对于BMP 文件则还要加上位图文件头。
BITMAPFIL EHEADER 结构中含有文件类型、文件长度和位图数据在文件内的起始位置
等信息,BITMAPINFOHEADER 结构包含位图高度和宽度、位平面数、每像素所占bit 数、颜
色表项数、位图压缩类型等信息,RGBQUAD 结构给出的颜色表是该位图图像使用的调色板,
并非所有BMP 位图都有颜色表,这可由BITMAPINFOHEADER 结构的biBitCount (每像素所
占bit 数) 成员来区别,biBitCount 为1 (黑白二色图) 、4 (16 色图) 、8 (256 色图) 时由颜色表项数
指出颜色表大小,biBitCount 为16 (16 位色图) 、24 (真彩色图) 、32 (32 位色图) 时没有颜色表。
这些信息正是在对位图处理和显示时所需的。
类库使用封装了Windows API 函数的设备相关类CDC 和GDI 对象类CBitmap 来操作位图,
但CBitmap 类必须在应用编译时将BMP 位图装入资源中,在应用运行时由其成员函数及
CDC 类的成员函数操作它。BMP 文件装入资源后被转换为DDB ,类Cbitmap 正是对一系列
DDB 操作的API 函数的封装。但将位图装入资源导致可执行文件增大且只能使用资源中有
限的位图,无法选取其它位图。为此,在图像处理程序设计时就必须直接操作BMP 位图文
件,这可通过VC 的MFC 和Windows API 函数实现:CFile 类的成员函数可打开BMP 文件并
读入内存; CPalette 类成员函数CreatePalette ( ) 创建调色板; Windows API 函数
CreateDIBSection() 创建兼容位图; CDC 类成员函数CreateCompatibleDC ( ) 、SelectObject ( ) 、
Select Palette () 、RealizePalette () 、和BitBlt () 分别是创建兼容设备描述表、将位图选进兼容DC、
选择调色板、及实现调色板及显示位图。
3  BMP 文件的几种显示方法
3. 1  直接写像素
Visual C + + 的CDC 类有一个成员函数Set Pixel ( int x , int y , COLORREF crColor ) 可以
直接在视区坐标(x ,y) 点设置成所要显示的颜色crColor 。只要在OnDraw ( ) 中加入循环写点
颜色代码即可,如:
for (x = 0 x < nWidth x + + )
  for (y = 0 y < nHeight y + + )
     pDC - > Set Pixel (x ,y ,nColor) 
BMP 位图文件可在文档序列化过程中加载到内存并由其头部信息计算出位图宽度
nWidth 和高度nHeight 以及各像素点的颜色值nColor 。这种方法简单,不用涉及复杂的调色
板操作,但显示速度慢且可看出写点过程。
3. 2  从资源中装入位图
在VC 开发环境的资源编辑器里可将要显示的BMP 位图文件加载到资源中,并用资源
ID 
  • 上一篇资讯: MSComm串口控件使用详解
  • 下一篇资讯: VC++ 的串口通讯编程
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号