精通Visual C++图像编程之位图基础(学习笔记)

现代计算机的显示系统可以分为三种:

1、VGA:能用640 X 480 的分辨率同时显示16中颜色。

2、SuperVGA:能用640 X 480 的分辨率同时显示256中颜色。

3、真彩色:能同时显示16,777,216中颜色。(24位)

所谓真彩色(True Color),是指显示出来的图像的颜色与真实世界中的颜色非常自然逼真,人眼难以区分它们的差别。通常使用RGB表示法来表现真彩色图像,即用3字节(24位)来表示一个真彩色像素的颜色值,红、绿、蓝三原色的浓度分别用一字节(8位)来表示。Windows提供了一个名为RGB的宏来将不同的R、G/B颜色值转化为24位的颜色值,其原型为:COLORREF RGB(BYTE bRed, BYTE bGreen, BYTE bBlue),其十六进制数据表示形式如下:0x00bbggrr。在真彩色系统中,每一个像素值都用24位来表示,像素值与真彩色颜色值可以一一对应,像素值就是所表现的颜色值。所谓调色板就是在在16色或256色显示系统中,将图像中出现最频繁的16或256种颜色所组成的颜色表。在调色板显示系统中,每一副图像都具有自己的调色板。MFC定义了CPalette类操作调色板。


位图的操作与调色板操作密切相关。Windows使用两种不同的位图,即设备相关位图DDB(Device Dependent Bitmap)和设备无关位图DIB(Device Independent Bitmap)。DIB位图文件中包含该位图的逻辑调色板的颜色表,其像素值是该调色板中的颜色索引值。DDB位图中不包含调色板信息,其像素值是该系统调色板中的颜色索引值。在结构上,DIB与DDB的主要区别是DIB包含一个名为RGBQUAD的结构,它描述了DIB位图的颜色表。


本章小结:

自然界的图像都是连续的模拟图像。

经数字化而产生的数字图像,是连续的模拟图像的一种离散的近似表示,通常用由采样点的值所组成的矩阵来表示。

数字图像的精度有数字化时采用的分辨率和颜色深度决定。

RGB三原色法师最基本的颜色表示法。

在真彩色系统中,每一个像素的值都用二十四位来表示,像素值与真彩色颜色值可以一一对应,所以像素值就是所表现的颜色值。

调色板就是在不具备真彩色显示能力的系统中,像素值与真彩色颜色值不能一一对应,为了得到最佳的效果,将图像中出现最频繁的有限种(通常是十六或二百五十六种)颜色组成颜色表。

真彩色系统下不需要调色板。

Win32 SDK 采用HPALETTE来表示调色板,MFC定义的CPalette类中封装了对调色板的主要操作函数。

Windows系统通常使用位图图像,包括DDB和DIB。

DDB中包含颜色信息,先试试使用系统调色板的颜色表。

DIB包含自己的颜色表,可以再任何条件下按固有的颜色进行显示。

Win32 SDK 采用HBITMAP来表示位图,MFC定义的CBitmap类中封装了对DDB的主要操作函数。

显示DIB时,应利用DIB颜色表建立位图调色板,并设置、实现调色板。

MFC没有提供处理DIB的类。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值