GDI对象在windows中可以描述成为一次绘画操作时可使用的抽象工具。包括(画笔、画刷、字体、区域、调色板、位图等)

GDI对象里的对象概念和在编程领域中面向对象编程的对象概念是不一样的!

GDI对象更多的偏重于是一个实体,而编程中的对象是一个能提供各种服务抽象概念。

在Windows中可以通过如下方式查看一个进程所拥有的GDI对象总数

1.打开任务管理器。

2.点击查看——选择列

3.选中“GDI对象”

然后再任务管理器中就能够查看了

在Windows中这种Gdi位图就叫做DDB(Device-Dependent Bitmap)设备相关图

在Windows中还有一个名字  叫做DIB(Device-Independent Bitmap)设备无关图,这个其实不是图,而是一种windows文件格式。

可以通过如下方式来创建GDI位图

1.HBITMAP hb= CreateBitmap(cx,              宽的像素个数

cy,              高的像素个数

cPlanes,     调色板数目,一般是1

cBitsPixel,   每个像素使用多少个位来表示

bits)           指向一位位数组的指针

2.HBITMAP hb= CreateCompatibleBitmap(hdc,cx,cy);

3.HBITMAP hb= CreateBitmapIndirect(&bitmap);

bitmap的结构为

bmtype   0

bmwidth  像素宽度

bmheight 像素高度

bmwidthBytes   每个扫描线的字节数,必须能被2整除,因为windows   会假设位图都是字对齐的。字对齐是一个非常重要的特性,我将再以后高级部分讲解

bmplanes 调色板数目,一般是1

bmBitsPixel   每个像素使用多少个位来表示

bmBits   指向一个位数组的指针(从上到下绘图,也就是说图像的第一个扫描行对应数组的前面几个位,最后一个扫描行对应数组的最后几位)

要使用GDI位图,也是用其他GDI对象一样,都是需要将位图选进到设备描述表,但是是用与位图选择的设备描述表是通过CreateCompatibleDc(hdc)所创建的内存设备描述表。

【笨嘴拙舌WINDOWS】GDI对象之位图的更多相关文章

  1. 用户对象/GDI对象/内核对象

    对象的分类 Windows的对象可以分为三种,分别是用户对象,GDI对象和内核对象.系统使用用户对象支持窗口管理,使用GDI对象支持图形,并使用内核对象支持内存管理,进程执行和进程间通信(IPC) . ...

  2. Delphi GDI对象之绘制位图

    http://www.cnblogs.com/pchmonster/archive/2012/07/06/2579334.html 绘制位图(Drawing Bitmaps) 绘制位图听起来似乎很难, ...

  3. Windows GDI绘图基础知识

    一.Windows可以画直线.椭圆线(椭圆圆周上的曲线)和贝塞尔曲线.////////////7 个画线函式是:(1)画直线LineTo    BOOL LineTo(HDC hdc,int nXEn ...

  4. windows gdi+ Bitmap 总结

    windows gdi+ 是对 windows gdi 的一个c++封装,同时增加了一些扩展功能,如反走样,样条曲线,变换矩阵,图像编解码等. gdi+ 相对于 gdi 也存在一些不足之处,如 执行效 ...

  5. Windows内核对象

    1. 内核对象 Windows中每个内核对象都只是一个内存块,它由操作系统内核分配,并只能由操作系统内核进行访问,应用程序不能在内存中定位这些数据结构并直接更改其内容.这个内存块是一个数据结构,其成员 ...

  6. 每添加一张图片后,GDI对象 + 3 原因: ImageList_AddIcon(hIcon) 后没调用 DestroyIcon(hIcon)

    今天无意间在[任务管理器]中发现,每添加1张图片后,应用程序的 GDI对象 + 3,添加图片后,再把所有图片删除, GDI对象数量没减少! 排查原因,发现: GDI对象 + 3 的代码是: int o ...

  7. 关于SelectObject之后是否要恢复之前的GDI对象

    以下列代码为例 { // 创建内存DC CDC mMemDc; mMemDc.CreateCompatibleDC( &dc ); // 创建兼容位图 CBitmap bmpMemBmp; b ...

  8. 用 windows GDI 实现软光栅化渲染器--gdi3d(开源)

    尝试用windows GDI实现了一个简单的软光栅化渲染器,把OpenGL渲染管线实现了一遍,还是挺有收获的,搞清了以前一些似是而非的疑惑. ----更新2015-10-16代码已上传.gihub地址 ...

  9. GDI 对象的释放与内存泄漏的问题研究

    最近写了一个GDI 绘图的程序,过程中遇到一个奇怪的问题,就是 定时器定时一会GDI绘的图就消失了..后来经过分析,原来是 GDI对象数量过多 ,即GDI对象超过10000个 导致内存泄漏的问题.找到 ...

随机推荐

  1. input输入框的border-radius属性在IE8下的完美兼容

    在工作中我们发现搜索框大部分都是有圆角的,为此作为经验不足的前端人员很容易就想到,给input标签添加border-radius属性不就解决了嘛.不错方法确实是这样,但是不要忘了border-radi ...

  2. Tomcat server分端口部署web项目

    <?xml version='1.0' encoding='utf-8'?> <Server port="8006" shutdown="SHUTDOW ...

  3. 评论 “App死亡潮:400万应用僵尸超八成,周期仅10月”

    点这里 原文: App死亡潮:400万应用僵尸超八成,周期仅10月 时间 2015-04-05 22:48:19  和讯科技相似文章 (16)原文  http://tech.hexun.com/201 ...

  4. C++堆栈与函数调用

    一.C++程序内存分配 1)在栈上创建.在执行函数时,函数内局部变量的存储单元都在栈上创建,函数结束是,这些存储单元自动被释放.栈内存的分配运算内置于处理器的指令集中,一般采用寄存器来存取,效率很高但 ...

  5. C#--判断当前是否是移动设备和设备的型号

    --如果是移动设备是true var ismobile = System.Web.HttpContext.Current.Request.Browser.IsMobileDevice; --设备型号( ...

  6. $("#id a") - $("#id .c a") = ?

    前沿 这是之前淘宝的一道面试题,题目借用了 jQuery 选择器的语法.大概的意思是,从 #id 元素内选出所有不是 .c 后代的 a 元素,即父元素 #id 内的所有后代元素中,选出不是 .c 后代 ...

  7. OneApm,NewRelic

    https://newrelic.com/ http://www.csdn.net/article/2013-03-25/2814631-new-relic-mobile-app-real-time- ...

  8. Haproxy安装及配置

    1.安装 # wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz # tar zcvf haproxy-1.3.20.t ...

  9. MyBatis学习总结_06_调用存储过程

    一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_ ...

  10. Android 自定义View,仿微信视频播放按钮

    闲着,尝试实现了新版微信视频播放按钮,使用的是自定义View,先来个简单的效果图...真的很简单哈. 由于暂时用不到,加上时间原因,加上实在是没意思,加上……,本控件就没有实现自定义属性,有兴趣的朋友 ...