CreateDIBSection
分辨率 我们常说的屏幕分辨率为640×480,刷新频率为70Hz,意思是说每行要扫描640个象素,一共有480行,每秒重复扫描屏幕70次。 调色板 有一个长宽各为200个象素,颜色数为16色的彩色图,每一个象素都用R、G、B三个分量表示。因为每个分量有256个级别,要用8位(bit),即一个字节(byte)来表示,所以每个象素需要用3个字节。整个图象要用200×200×3,约120k字节,可不是一个小数目呀!如果我们用下面的方法,就能省的多。 因为是一个 16 色图,也就是说这幅图中最多只有 16 种颜色,我们可以用一个表:表中的每一行记录一种颜色的 R 、 G 、 B 值。这样当我们表示一个象素的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的索引值。举个例子,如果表的第 0 行为 255 , 0 , 0( 红色 ) ,那么当某个象素为红色时,只需要标明 0 即可。 让我们再来计算一下: 16 种状态可以用 4 位 (bit) 表示,所以一个象素要用半个字节。整个图象要用 200×200×0.5 ,约 20k 字节,再加上表占用的字节为 3×16=48 字节 . 整个占用的字节数约为前面的 1/6 ,省很多吧? 这张 R 、 G 、 B 的表,就是我们常说的调色板 (Palette) ,另一种叫法是颜色查找表 LUT(Look Up Table)