【笨嘴拙舌WINDOWS】GDI对象之位图
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对象之位图的更多相关文章
- 用户对象/GDI对象/内核对象
对象的分类 Windows的对象可以分为三种,分别是用户对象,GDI对象和内核对象.系统使用用户对象支持窗口管理,使用GDI对象支持图形,并使用内核对象支持内存管理,进程执行和进程间通信(IPC) . ...
- Delphi GDI对象之绘制位图
http://www.cnblogs.com/pchmonster/archive/2012/07/06/2579334.html 绘制位图(Drawing Bitmaps) 绘制位图听起来似乎很难, ...
- Windows GDI绘图基础知识
一.Windows可以画直线.椭圆线(椭圆圆周上的曲线)和贝塞尔曲线.////////////7 个画线函式是:(1)画直线LineTo BOOL LineTo(HDC hdc,int nXEn ...
- windows gdi+ Bitmap 总结
windows gdi+ 是对 windows gdi 的一个c++封装,同时增加了一些扩展功能,如反走样,样条曲线,变换矩阵,图像编解码等. gdi+ 相对于 gdi 也存在一些不足之处,如 执行效 ...
- Windows内核对象
1. 内核对象 Windows中每个内核对象都只是一个内存块,它由操作系统内核分配,并只能由操作系统内核进行访问,应用程序不能在内存中定位这些数据结构并直接更改其内容.这个内存块是一个数据结构,其成员 ...
- 每添加一张图片后,GDI对象 + 3 原因: ImageList_AddIcon(hIcon) 后没调用 DestroyIcon(hIcon)
今天无意间在[任务管理器]中发现,每添加1张图片后,应用程序的 GDI对象 + 3,添加图片后,再把所有图片删除, GDI对象数量没减少! 排查原因,发现: GDI对象 + 3 的代码是: int o ...
- 关于SelectObject之后是否要恢复之前的GDI对象
以下列代码为例 { // 创建内存DC CDC mMemDc; mMemDc.CreateCompatibleDC( &dc ); // 创建兼容位图 CBitmap bmpMemBmp; b ...
- 用 windows GDI 实现软光栅化渲染器--gdi3d(开源)
尝试用windows GDI实现了一个简单的软光栅化渲染器,把OpenGL渲染管线实现了一遍,还是挺有收获的,搞清了以前一些似是而非的疑惑. ----更新2015-10-16代码已上传.gihub地址 ...
- GDI 对象的释放与内存泄漏的问题研究
最近写了一个GDI 绘图的程序,过程中遇到一个奇怪的问题,就是 定时器定时一会GDI绘的图就消失了..后来经过分析,原来是 GDI对象数量过多 ,即GDI对象超过10000个 导致内存泄漏的问题.找到 ...
随机推荐
- Linux下搭建Android NDK , Linux 驱动开发环境
Eclispe Luna(4.4):http://www.eclipse.org/downloads/ CDT :http://www.eclipse.org/cdt/downloads.php AD ...
- JDBC 程序的常见错误及调试方法
详细介绍:http://dev.mysql.com/doc/refman/5.5/en/error-handling.html http://dev.mysql.com/doc/refman/5.5/ ...
- (转)Android之ListView原理学习与优化总结
转自: http://jishu.zol.com.cn/12893.html 在整理前几篇文章的时候有朋友提出写一下ListView的性能优化方面的东西,这个问题也是小马在面试过程中被别人问到的….. ...
- Linux多线程之同步
引言 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待条件变量的条件成立而挂起(此时不再占用cpu):另一个线程使条件成立(给出条件成立信号).为了防止竞争,条件变 ...
- hdu 2413(最大匹配+二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2413 思路:由于要求最少的时间,可以考虑二分,然后就是满足在limit时间下,如果地球战舰数目比外星战 ...
- (一)初探HTML!
想自己动手做一个个人网站,因此,最近在自学PHP,主要看韩顺平老师的教学视频..将自己学习的点点滴滴记录在博客园,希望数月之后,自己可以熟练的运用PHP,也希望各位PHP高手们给予指点,不胜感激!! ...
- SQL Server Configuration Manager出错
在 Windows 桌面上,单击“开始”,然后单击“运行”. 在“打开”框中,键入 MMC,然后单击“确定”. 在“控制台”窗口中,单击菜单栏上的“文件”,然后单击“添加/删除管理单元”. 在“ ...
- http://www.cnblogs.com/yjmyzz/p/dubbox-demo.html
http://www.cnblogs.com/yjmyzz/p/dubbox-demo.html
- 怎样查看Tomcat动态控制台信息
在web项目调试期间,时常需要查看输出的调试信息,例如当hibernate设置为显示SQL语句时,每次运行的SQL语句会输出到终端,另外有时需要在代码中插入一些输出语句,以方便掌握运行情况,但当插入S ...
- TForm的显示过程
新建一个空窗体项目,然后运行,此时首先运行: procedure TApplication.Run; begin FRunning := True; try AddExitProc(DoneAppli ...


