參考文档: http://blog.csdn.net/hnust_xiehonghao/article/details/37652927

http://blog.sina.com.cn/s/blog_4c75bd8c0100zsw7.html

Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu  转载请标明来源

绘制DIB图到到设备,明白一点。DIB设备无关图形向设备CDC上绘的话,肯定是须要经过图形pixel像素转换的,要转换成设备的颜色像素格式。

參考这段说明:

DIB的颜色信息储存在自己的颜色表中。程序一般要依据颜色表为DIB创建逻辑调色板。

在输出一幅DIB之前。程序应该将其逻辑调色板选入到相关的设备上下文中并实现到系统调色板中。然后再调用相关的GDI函数(如::SetDIBitsToDevice或::StretchDIBits)输出DIB。

在输出过程中,GDI函数会把DIB转换成DDB,这项工作主要包含下面两步:

将DIB的颜色格式转换成与输出设备同样的颜色格式。

比如,在真彩色的显示模式下要显示一个256色的DIB,则应该将其转换成24位的颜色格式。

将DIB像素的逻辑颜色索引转换成系统调色板索引。

DIB图形绘制的方法:

1.      
通过CImage绘制图形文件(支持png/bmp/jpg/gif等)

对于DIB图形文件。方法比較简单。也比較易用:

已有DIB图形的文件,使用CImage::load载入图形,然后再使用CImage::Draw绘制到设置DC绑定的图形上就可以

2.      
通过CBitmap载入文件并绘制(仅支持bmp等少量格式)

和CImage类似,CBitmap提供了LoadBitmap方法,载入图形,把一个DIB图形载入成为了一个DDB图形。然后能够用CBitmap::Draw等方法绘制

3.      
通过转换为DDB图形,画图

假设已有内存DIB信息,能够用过CreateDIBitmap函数,把DIB图形结构和数据传入,返回一个DDB的图形HBITMAP

4.      
直接把DIB图形绘制到设备中,函数中自带转换

SetDIBitsToDevice或StretchDIBits函数,通过输入DIB图形信息和HDC以及绘制区域等,直接把DIB图形绘到设备CDC上。

MFC画图总结-DIB图形绘制的更多相关文章

  1. C++MFC编程笔记day06 MFC向导、MFC画图类使用

    MFC画图    MFC画图类包含画图设备类和画图对象类    1 画图设备类      CDC类-父类是CObject,封装的是一般的画图设备,比如:显示器,            打印机等.    ...

  2. 【Windows编程】系列第五篇:GDI图形绘制

    上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...

  3. [游戏学习26] MFC 时间函数 画图形

    >_<:这里第一次介绍MFC的时间函数,功能和Win32里的计时器类似. >_<:这里还介绍了MFC的图形绘制函数,和Win32有一点区别 >_<:ABC.h #d ...

  4. 图形绘制 Canvas Paint Path 详解

    图形绘制简介        Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.大部分2D使用的api都在android.grap ...

  5. 数据分析——Matplotlib图形绘制

    创建画布或子图 函数名称 函数作用 plt.figure 创建一个空白画布,可以指定画布大小,像素. figure.add_subplot 创建并选中子图,可以指定子图的行数,列数,与选中图片编号. ...

  6. QT 基本图形绘制

    QT 基本图形绘制 1.告诉绘制引擎一些东西 QPainter::Antialiasing 在可能的情况下,反锯齿       QPainter::TextAntialiasing 在可能的情况下,文 ...

  7. matlab学习笔记之五种常见的图形绘制功能

    分类: 离散数据图形绘制 函数图形绘制 网格图形绘制 曲面图形绘制 特殊图形绘制 本文重点介绍matlab五种图形绘制方法的后三种. 一.网格图形绘制 以绘制函数z=f(x,y)三维网格图为例,下面为 ...

  8. 自定义控件之Canvas图形绘制基础练习-青春痘笑脸^_^

    对于自定义控件的意义不言而喻,所以对它的深入研究是很有必要的,前些年写过几篇关于UI效果的学习过程,但是中途比较懒一直就停滞了,而对于实际工作还是面试来说系统深入的了解自定义控件那是很有必要的,所以接 ...

  9. 13个JavaScript图表(JS图表)图形绘制插件【转】

    现在网络上又有越来越多的免费的(JS 图表)JavaScript图表图形绘制插件.我之前给一家网站做过复杂的图形,我们用的是 highchart.在那段时间,没有很多可供选择的插件.但现在不同了,很容 ...

随机推荐

  1. 【洛谷】2607: [ZJOI2008]骑士【树形DP】【基环树】

    P2607 [ZJOI2008]骑士 题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一 ...

  2. 216. 组合总和 III

    216. 组合总和 III 题意 找出所有相加之和为 n 的 k 个数的组合.组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字. 说明: 所有数字都是正整数. 解集不能包含重复的 ...

  3. DataTable初次使用笔记

    概述:DataTable是一个jQuery插件,用于生成HTML表格,功能很强大. 使用: 使用DataTable需要引入jQuery,因为他是基于jQuery的插件,然后引入DataTable的js ...

  4. 【对比分析六】JavaScript中GET和POST的区别及使用场景

    区别: GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符 POST:一般用于修改服务器上的资源,对所发送的信息没有限制 GET方式需要使用 Request ...

  5. php远程获取图片或文件信息(get_headers,fsocketopen,curl)

    <?php if(!function_exists("remote_filesize")){ /** * 获取远程或本地文件信息 * @param string $strUr ...

  6. ThinkPHP实现登录限制时__construct和_initialize的区别

    ThinkPHP支持两种构造方法:  __construct和_initialize(ThinkPHP内置的构造方法). 测试URL为:  http://oa.com/index.php/Admin/ ...

  7. .Net 中DataTable和 DataRow的 区别与联系

    1.简要说明二者关系 DataRow 和 DataColumn 对象是 DataTable 的主要组件.使用 DataRow 对象及其属性和方法检索.评估.插入.删除和更新 DataTable 中的值 ...

  8. 【scrapy】使用方法概要(四)(转)

    [请初学者作为参考,不建议高手看这个浪费时间] 上一篇文章,我们抓取到了一大批代理ip,本篇文章介绍如何实现downloaderMiddleware,达到随即使用代理ip对目标网站进行抓取的. 抓取的 ...

  9. Netdata----Linux 性能实时监测工具

    https://my-netdata.io/ https://github.com/firehol/netdata/wiki http://soluck.iteye.com/blog/2291618

  10. Major GC 是清理老年代。 Full GC 是清理整个堆空间—包括年轻代和老年代。

    Major GC 是清理老年代. Full GC 是清理整个堆空间—包括年轻代和老年代.