词条 | 点阵图位元 |
释义 | § 说明 要设定图素位元,请呼叫: SetBitmapBits (hBitmap, cBytes, &bits) ; GetBitmapBits函式有相同的语法: GetBitmapBits (hBitmap, cBytes, &bits) ; 在这两个函式中,cBytes指明要复制的位元组数,bits是最少cBytes大小的缓冲区。 DDB中的图素位元从顶列开始排列。我在前面说过,每列的位元组数都是偶数。除此之外,没什么好说明的了。如果点阵图是单色的,也就是说它有1个位元面并且每个图素占1位元,则每个图素不是1就是0。每列最左边的图素是本列第一个位元组最高位元的位元。我们在本章的後面讲完如何显示单色DDB之後,将做一个单色的DDB。 对於非单色点阵图,应避免出现您需要知道图素位元含义的状况。例如,假定在8位颜色的VGA上执行Windows,您可以呼叫CreateCompatibleBitmap。通过GetDeviceCaps,您能够确定您正处理一个有1个颜色位元面和每图素8位元的设备。一个位元组储存一个图素。但是图素值0x37是什么意思呢?很明显是某种颜色,但到底是什么颜色呢? 图素实际上并不涉及任何固定的颜色,它只是一个值。DDB没有颜色表。问题的关键在於:当DDB显示在萤幕上时,图素的颜色是什么。它肯定是某种颜色,但具体是什么颜色呢?显示的图素将与在显示卡上的调色盘查看表里的0x37索引值代表的RGB颜色有关。这就是您现在碰到的装置依赖性。 不过,不要只因为我们不知道图素值的含义,就假定非单色DDB没用。我们将简要看一下它们的用途。下一章,我们将看到SetBitmapBits和GetBitmapBits函式是如何被更有用的SetDIBits和GetDIBits函式所取代的。 因此,基本的规则是这样的:不要用CreateBitmap、CreateBitmapIndirect或SetBitmapBits来设定彩色DDB的位元,您只能安全地使用这些函式来设定单色DDB的位元。(如果您在呼叫GetBitmapBits期间,从其他相同格式的DDB中获得位元,那么这些规则例外。) 在继续之前,让我再讨论一下SetBitmapDimensionEx和GetBitmapDimensionEx函式。这些函式让您设定(和获得)点阵图的测量尺寸(以0.1毫米为单位)。这些资讯与点阵图解析度一起储存在GDI中,但不用於任何操作。它只是您与DDB联系的一个测量尺寸标识。 |
随便看 |
百科全书收录594082条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。