zoukankan      html  css  js  c++  java
  • win32

    设备相关位图(DDB): 

    • DDB不包含颜色值,因为每个设备可以具有自己的一组颜色,所以为一个设备创建的DDB可能无法在其他设备上很好地显示。
    • DDB通常被称为兼容位图,并且它通常比DIB具有更好的GDI性能。(在视频存储器上创建DDB)
    • DDB有两种类型:可丢弃和不可丢弃。可丢弃的DDB是一种位图,如果未将位图选择到DC中且系统内存不足,则系统会将其丢弃。
    • 应用程序可以通过初始化所需的结构并调用CreateDIBitmap函数从DIB创建DDB 

    设备无关位图(DIB):

    • DIB包含一个颜色表表描述像素值如何与RGB颜色值对应,后者描述通过发光产生的颜色。因此,DIB可以在任何设备上实现正确的配色方案。
    • DIB的颜色和尺寸信息存储在BITMAPINFO结构中,该结构由BITMAPINFOHEADER结构和后面的两个或多个RGBQUAD结构组成。
    • 通过初始化所需的结构并调用GetDIBits函数,应用程序可以从DDB创建DIB 。(要确定设备是否支持此功能,请调用GetDeviceCaps函数,将RC_DI_BITMAP指定为RASTERCAPS标志)
    • 应用程序可以通过调用SetDIBitsToDeviceStretchDIBits函数,使用DIB设置显示设备上的像素。(若要确定设备是否支持SetDIBitsToDevice函数,请调用GetDeviceCaps函数,并将RC_DIBTODEV指定为RASTERCAPS标志)

    小结: DIB所需要的知识面比DDB要广的多,光靠看文档是远远不够的。 我们需要通过相关的例子来学习它。 不过DDB与DIB的存在感很低,我们也很少遇到相关的问题,即使遇到也不会过于复杂。所以我们只需要记住两者最重要的区别,DIB可以在不同设备之间传输,并且很好的显示色彩,因为它自身包含颜色表,而DDB依托设备的颜色表,所以可能在其他设备上显示效果不会很好。

  • 相关阅读:
    第三章 p62 或运算
    p57 字符串的长度
    p53 ASCII码
    整数类型,如同时钟
    重要:原码、反码、补码...
    p42 实验溢出(上溢)
    P40 字节单位:KMGT
    p38 二、八、十六进制的对应关系
    p13 数组元素的地址
    p11 内存中的数据和地址
  • 原文地址:https://www.cnblogs.com/strive-sun/p/14116095.html
Copyright © 2011-2022 走看看