【笨嘴拙舌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个 导致内存泄漏的问题.找到 ...
随机推荐
- Confluence Wiki Markup & Markdown
Markup : 默认有支持 Markdown : 需先安装插件,插件下载地址: Confluence markdown : https://marketplace.atlassian.com/plu ...
- Unity3D研究院之LZMA压缩文件与解压文件
原地址:http://www.xuanyusong.com/archives/3095 前两天有朋友告诉我Unity的Assetbundle是LZMA压缩的,刚好今天有时间那么就研究研究LZMA.它是 ...
- mysql死锁,等待资源,事务锁,Lock wait timeout exceeded; try restarting transaction解决
前面已经了解了InnoDB关于在出现锁等待的时候,会根据参数innodb_lock_wait_timeout的配置,判断是否需要进行timeout的操作,本文档介绍在出现锁等待时候的查看及分析处理: ...
- Using the viewport meta tag to control layout on mobile browsers
A typical mobile-optimized site contains something like the following: <meta name="viewport& ...
- Java 8怎么了:局部套用vs闭包
[编者按]本文作者为专注于自然语言处理多年的 Pierre-Yves Saumont,Pierre-Yves 著有30多本主讲 Java 软件开发的书籍,自2008开始供职于 Alcatel-Luce ...
- visual studio 2012 Github
前言 一直以来都想使用Git来管理自己平时积累的小代码,就是除了工作之外的代码了.有时候自己搞个小代码,在公司写了,就要通过U盘或者网盘等等一系列工具进行Copy,然后回家才能继续在原来的基础上作业. ...
- Jsp helloWorld
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEnco ...
- iOS-xib(使用XIB自定义一个UIView )
1.新建一个xib视图
- poj 3710 Christmas Game 博弈论
思路:首先用Tarjan算法找出树中的环,环为奇数变为边,为偶数变为点. 之后用博弈论的知识:某点的SG值等于子节点+1后的异或和. 代码如下: #include<iostream> #i ...
- Jquery DataTables warning : Requested unknown from the data source for row 0
昨天在做 Jquery DataTables 的时候,遇到的一个问题,我使用MVC,在tables上加入了一个actionlink的href.但是在运行起来的时候,报错: DataTables war ...