windows图形编程笔记
来源:互联网 发布:Mac mysql导入sql文件 编辑:程序博客网 时间:2024/05/22 05:33
位图和BitBlt
1.DDB,设备相关位图,每个像素的组成位本身便指示一种颜色的编号,这种颜色编号由显卡定义, 或者说颜色对照表由显卡定义, 这就是设备依赖性.
2.BitBlt和StrenchBlt的最后一个参数, 位映像模式, 指示如何操纵源位图(Source), 目标位图(Destination), DC的当前画刷(Pattern).不同的参数值代表的是某种三者的位运算.
3.创建了一个GDI对象, GDI必然开辟一块内存存放信息, 但是应用程序不能直接引用这块内存, 只能通过句柄访问.DeleteObject便是清除这块内存.
4.假如某个位图每像素含有PixelNum个位, 有PlaneNum个位面, 则每个位面的字节数是(cx*PixelNum)/8, 整个位图的字节数是((cx*PixelNum)/8)*PlaneNum, 设备的位面PlaneNum的值可以通过GetDeviceCaps获取, 显然这个函数的使用很麻烦, 为此使用CreateCompatibleBitmap默认采用当前设备的像素位数和位面值来创建位图. DIB中位面始终是1.
5.设备内容指的是特殊的图形输出设备(例如视讯显示器或者打印机)及其设备驱动程序
6.1位/8位/16位的DIB文件中本身包含色彩对照表, 每个像素的"位组合"是"颜色对照表"的一个索引. 24位的DIB文件不包含颜色对照表
而是每24位的3个字节代表了红/绿/蓝的颜色值.
7.灰阶: 颜色的深度, 比如红色, 有深红色/粉红色/浅红色......
8.DIB分为"灰阶DIB(gray shades)"和"调色板DIB(palletized color)", 灰阶DIB就是只使用部分颜色, 而且R/G/B的值是一样的, 比如
对于8位DIB, 按理说可以支持256种颜色, 如果设置biClrUsed=64, 则只使用其中的64种: 00-00-00 04-04-04 08-08-08...; 调色板
DIB, 其颜色值对应于调色板.
9.设备无关性, 实际上关键是在于显卡驱动, 显卡驱动会把DIB每个像素的颜色值的位表示转换为自己的颜色值的位表示
10.DIB是一个文件或内存块, 而DDB是一个GDI对象只能通过句柄访问.
11.CreateDIBitmap应该叫做CreateDDBitmap; CreateDIBSection应该叫做CreateDIBitmap
单色,则每个像素需要1位
16色,则每个像素需要4位256色,则每个像素需要8位
真彩色,则每个像素有24位
位面
早期的时候,由于CPU地址总线位数的限制,使得CPU无法一次读取显卡的内容(如20位地址总线,一次只能读1k,而1024*768、256色的显卡有768K),于是显卡厂商就给显存分成了数个区域,这些区域就称作位面。每个像素点的位分布在不同的位面里,CPU在显示这个像素的时候,需要把所有位面读一遍。
像素
“The value of each pixel in the bitmap indicates the average color of the image within a unit of this grid”,可以这么理解,像素就是颜色,它的值指明了它代表的这一小块区域的颜色
DDB和DIB
DDB(设备相关位图)是Windows最早的用于表示图像的方式,它是GDI对象的一种,分为单色位图或者是与某种特定设备相联系的位图(如每个像素占几位/多少种颜色等)
DIB(设备无关位图)是Windows后来发明的一种图像格式,后缀名为.bmp,简单的说,DIB可以认为是说的一个图像文件。DIB不是GDI对象,因此也不能为它创建句柄。
- windows图形编程笔记
- Windows图形编程笔记
- windows图形编程总结
- 【整理】windows图形编程
- windows图形编程第一章有感
- <<javascript 高效图形编程>>笔记
- 《Windows核心编程》---图形用户界面之窗口
- Python学习笔记·交互式图形编程
- Windows核心编程笔记
- Windows网络编程笔记
- windows 编程笔记
- windows网络编程笔记
- Windows编程笔记小结
- windows编程笔记1
- windows核心编程笔记
- Windows核心编程笔记
- windows编程学习笔记
- windows网络编程笔记
- 交叉编译tftp-hpa
- 黑客是怎样炼成的
- SqlParameter的用法
- 一步一步构建自己的Launcher(前言)(1)
- 【整套 9个视频】linux系统与网络服务管理技术大全(第2版)
- windows图形编程笔记
- 【整套22个视频】Linux网络服务教学视频
- 【整套9个视频】剖析linux防火墙安全技术
- 通过经纬度计算距离(flex,actionscript)
- 快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!
- hdu 1217 Arbitrage--Floyd
- jsort 页面无刷新排序
- java生成uuid
- 用户控件内部操控 其所在窗体 菜单属性