设备相关的位图(DDB)使用单一结构BITMAP结构描述。该结构的成员指定矩形区域的宽度和高度,以像素为单位;将条目从设备调色板映射到像素的数组的宽度;以及器件的颜色格式,在每个像素的颜色平面和位数方面。应用程序可以通过调用GetDeviceCaps函数并指定适当的常量来检索设备的颜色格式。请注意,DDB不包含颜色值;相反,颜色是依赖于设备的格式。有关详细信息,请参阅位图中的颜色。因为每个设备都可以有自己的颜色集,所以为一个设备创建的DDB可能在不同的设备上可能不会很好地显示。
要在设备上下文中使用DDB,它必须具有该设备上下文的颜色组织。因此,DDB通常被称为兼容位图,并且通常具有比DIB更好的GDI性能。例如,要创建视频内存的位图,最好使用与主显示屏相同颜色格式的兼容位图。一旦在视频存储器中,渲染到位图并将其显示到屏幕上显着快于从系统存储器表面或直接从DIB。
除了能够实现更好的GDI性能之外,还可以使用兼容的位图来捕获图像(请参阅捕获图像),并在运行时为菜单创建位图,请参见“创建位图”(请参阅​​使用菜单)。

要在具有不同颜色组织的设备之间传输位图,请使用GetDIBits将兼容位图转换为DIB,并调用SetDIBits或StretchDIBits以将DIB显示到第二个设备。

DDB有两种类型:可丢弃和不可忽略。一个可丢弃的DDB是一个位图,系统丢弃位图没有被选中到DC,如果系统内存不足。CreateDiscardableBitmap函数创建可丢弃的位图。CreateBitmap,CreateCompatibleBitmap和CreateBitmapIndirect函数创建不可忽略的位图。

应用程序可以通过初始化所需的结构并调用CreateDIBitmap函数从DIB创建DDB。在调用CreateDIBitmap时指定CBM_INIT等效于调用CreateCompatibleBitmap函数以设备格式创建DDB,然后调用SetDIBits函数将DIB位转换为DDB。要确定设备是否支持SetDIBits函数,请调用GetDeviceCaps函数,将RC_DI_BITMAP指定为RASTERCAPS标志。原文:https://msdn.microsoft.com/en-us/library/dd183561(v=vs.85).aspx

相关阅读:

device-independent bitmap (DIB) 设备无关位图

BMP图像数据格式详解

Device-Dependent Bitmaps (DDB) 设备相关位图的更多相关文章

  1. windows设备相关位图与设备无关位图

    windows支持两种位图格式,DDB(device-dependent bitmap),DIB(device-independent bitmap).设备相关位图用于windows显示系统中,其图像 ...

  2. device-independent bitmap (DIB) 设备无关位图

    设备无关位图即独立于设备的位图(DIB)与"Device-Dependent Bitmaps (DDB) 设备相关位图"相比,它不再依赖于具体的设备,从而更适合在不同的计算机之间传 ...

  3. 第15章 设备无关位图_15.3 DIB和DDB的结合

    第15章 设备相关位图_15.3 DIB和DDB的结合 15.3.1 从DIB创建DDB (1)hBitmap =CreateDIBitmap(…)——注意这名称会误导,实际上创建的是DDB 参数 说 ...

  4. 依赖于设备的位图(DDB) ,CreateCompatibleBitmap用法

    DDB(Device-dependent bitmap)依赖于具体设备,这主要体现在以下两个方面: DDB的颜色模式必需与输出设备相一致.例如,如果当前的显示设备是256色模式,那么DDB必然也是25 ...

  5. 第15章 设备无关位图_15.1 DIB文件格式

    15.1 DIB文件格式(一种文件格式,扩展名为BMP) 15.1.1 OS/2风格的DIB 文件格式 字段 说明 文件头 (BITMAPFILEHEADER) 1.共14个字节 2.缩写建议用bmf ...

  6. 第三章 CUDA设备相关

    这章介绍了与CUDA设备相关的参数,并给出了了若干用于查询参数的函数. 章节代码(已合并): #include <stdio.h> #include "cuda_runtime. ...

  7. 《GPU高性能编程CUDA实战》第三章 CUDA设备相关

    ▶ 这章介绍了与CUDA设备相关的参数,并给出了了若干用于查询参数的函数. ● 代码(已合并) #include <stdio.h> #include "cuda_runtime ...

  8. [中英对照]Device Drivers in User Space: A Case for Network Device Driver | 用户态设备驱动: 以网卡驱动为例

    前文初步介绍了Linux用户态设备驱动,本文将介绍一个典型的案例.Again, 如对Linux用户态设备驱动程序开发感兴趣,请阅读本文,否则请飘过. Device Drivers in User Sp ...

  9. Xamarin设备相关图片尺寸要求

    Xamarin设备相关图片尺寸要求   Xamarin跨平台开发,要兼顾iOS.Android.尤其是图片方面,各个平台有对应的不同要求.在iOS中,需要提供没有后缀(设备无关单位尺寸).@2x(双倍 ...

随机推荐

  1. 20145312 实验四《Andoid开发基础》

    20145312 实验四<Andoid开发基础> 实验内容 1. 安装Android Studio 2. 运行安卓AVD模拟器 3. 使用Android运行出模拟手机并显示自己的学号 实验 ...

  2. springmvc.xml和applicationContext.xml配置的特点

    1:springmvc.xml配置要点 一般它主要配置Controller的组件扫描器和视图解析器 下为:springmvc.xml文件 <?xml version="1.0" ...

  3. backstopJS 参数详解 CN

    最近需要进行前端UI验证,详细研究了下backstopJS.官方文档为En,手动翻译了下.相关参数信息如下: 如需转载引用,请保留原文出处,支持原创,感谢.

  4. Android Studio开发学习 - 1. 添加Activity

    1. 项目上点右键,New -> Activity -> Blank Activity 这将生成Activity的 Layout.Class .和相关的配置信息(在AndroidManif ...

  5. 【bzoj4976】宝石镶嵌(思维dp)

    题目传送门:bzoj4976 不得不说这是道脑洞dp,思路真的清奇. 我们可以发现,虽然n很大,但是k只有100,这里面似乎隐藏了什么玄机. 我们可以发现,设总共有$ tot $个二进制位在这n个数中 ...

  6. LeetCode—— Partition Equal Subset Sum

    Question Given a non-empty array containing only positive integers, find if the array can be partiti ...

  7. c#实现任务栏添加控制按钮

    Windows7Taskbar的使用 你需要引入3个文件VistaBridgeLibrary.dll.Windows7.DesktopIntegration.dll.Windows7.DesktopI ...

  8. Kruskal算法初步

    2017-09-18 21:53:00 writer:pprp 代码如下: /* @theme: kruskal @writer:pprp @date:2017/8/19 @begin:21:19 @ ...

  9. SQL优化- in和not in

    in不会导致索引失效,但最终数据库会将in语句解析为or语句,eg: select * from T_MAIN_PROCESS t where t.audit_status_code in ('05' ...

  10. Memcached gets 命令

    Memcached gets 命令获取带有 CAS 令牌存 的 value(数据值) ,如果 key 不存在,则返回空. 语法: gets 命令的基本语法格式如下: gets key 多个 key 使 ...