VC++之图形设备接口------基本概念

来源:互联网 发布:cn域名需要备案吗 编辑:程序博客网 时间:2024/05/19 06:47

http://hi.baidu.com/yn_bg/item/77e40046127b6fd5c1a592ac

 

VC++之图形设备接口------基本概念

一、GDI

GDI,图形设备接口,用户可调用的一套函数集与用来描画显示区的对象集,由设备描述环境、画笔、画刷、字体、调色板等对象组成。

二、CDC

CDC,一个通用DC类。

三、CD

CD,设备描述环境,画图所需载体和一套齐全绘图工具的集合,宛如现实中的纸(承载画面的载体)、笔、墨、彩色颜料等集合。每一个DC都与一套GDI对象关联,都包含有画笔、画刷、字体等GDI对象。
由CDC类派生的几个特定DC类:CClientDC(窗口客户区内绘图的DC),允许应用程序在窗口客户区绘图;
CMetaFileDC(图元文件DC),允许应用程序保存绘图命令,使所绘之图可以回放;
CPaintDC(绘图DC),允许应用程序于响应WM_PAINT消息时刷新窗口;
CWindowDC(窗口DC),允许应用程序在整个窗口绘图。
图元文件,即一系列绘图命令,用于保存绘图对象
使用图元文件例:http://hi.baidu.com/_ynbg/blog/item/8bddcefb731285939f5146b2.html

四、位图

位图,即点阵图(或绘制图),由一个个点(像素----图片元素)组成,有DDB(与设备相关的位图)和DIB(与设备无关的位图)两类。
DDB,与设备相关的位图,该位图不包含颜色调色板。DDB使用系统调色板,DDB很少保存在磁盘上,多数用于应用程序在内存中创建与操作。
DDB编程例:http://hi.baidu.com/_ynbg/blog/item/5ce1a0b4c1c3ead437d3ca44.html
DIB,与设备无关的位图,该位图含有颜色信息。DIB存储于磁盘,内含位图尺寸及其他属性,以.BMP为扩展名,可运行于不同设备与不同操作系统。
DIB文件结构:结构分四部份
文件头 BITMAPFILEHEADER 一个包含加载位图所需信息之结构
位图头 BITMAPINFOHEADER 一个包含位图信息之结构
位图颜色表 RGBQUAD 一个包含颜色信息之结构
位图图像数据
定义结构BITMAPINFO: //包含位图头和位图颜色表的结构
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiheader;
RGBQUAD bmiColors(l);
} BITMAPINF, *PBITMAPINFO;
DIB编程例:http://hi.baidu.com/_ynbg/blog/item/66dbda3ea6416bf755e72322.html

五、调色板

1、调色板,是调和、搁置新鲜颜料的平整板面。
是每个表项为24位RGB颜色值组成的256个表项的RGB颜色表。
是16色或256色显示系统中,用图像中出现最频繁的16或256种颜色所组成的颜色表。调色板有硬件调色板,系统调色板,逻辑调色板三种。
调色板存在于一个位图文件中、一个窗体的DC中、操作系统中。

2、三种调色板概念:

a、硬件调色板,显卡适配器所能实际表达的颜色深度。
b、系统调色板,显示系统当前使用的调色板,是Windows保留的有20种颜色的调色板。
c、逻辑调色板,保存在内存中,窗口显示的每一个图像的调色板。即windows操作系统通过调色板管理机制为每个窗口应用程序DC分配的调色板(系统调色板只有一个,逻辑调色板可以有多个)。

3、彩色显示系统概念

a、16色显示系统,用4位表示像素值之彩色显示系统
b、256色显示系统,用8位表示像素值之彩色显示系统
c、真彩色显示系统,用24位表示像素值,使得像素值与真彩色颜色值一一对应之彩色显示系统。

4、逻辑调色板与系统调色板相关的几个概念

a、颜色索引号,颜色按4位或8位编号,即0~15或0~255进行编号,每一编号代表一种颜色的颜色编号。
b、颜色查找表,即调色板映射表,乃4位或8位索引号与 24位颜色值的对应表。
c、调色板图像,使用调色板的图像,其像素值为颜色在调色板查找表中的索引号

5、逻辑调色板与系统调色板关系图

四、坐标

物理坐标,显示设备上的实际坐标,在屏幕上以像素形式表现图形图像的坐标,有屏幕坐标、窗口坐标、客户坐标三种。

按原点所处位置不同物理坐标分为三种:
屏幕坐标,原点位于屏幕左上角的坐标。
窗口坐标,原点位于整个窗口左上角的坐标。
客户坐标,原点位于客户窗口左上角的坐标。

像素,屏幕上以各种组合和颜色发光的小点,是显示器能够显示的最小的元素,是以水平的行排列的点。例如800*600表示屏幕由800像素,600行构成。

逻辑坐标,传递给屏幕显示数据的GDI函数的坐标,是用逻辑单位为长度单位的坐标。

设备描述环境(设设备上下文)的窗口原点与视区原点:
窗口原点,与逻辑坐标相关的原点,这里的窗口为整个数据视图,是逻辑窗口,可能仅有一部分出现于屏幕上。
视区原点,与物理、客户窗口坐标相关的原点,视区表示实际在屏幕上出现的窗口,是物理窗口

五、映射

映射,将逻辑单位坐标与物理坐标一一对应起来的过程。

映射模式,将逻辑坐标与物理坐标一一对应起来的模式,Windows中共定义有8种。
8种映射模式:
MM_TEXT GID转换一逻辑单位为一个像素,x向右增加,y向下增加。是Windows的缺省映射模式。
MM_HIMETRIC GID转换一逻辑单位为0.01毫米,x向右增加,y向上增加。
MM_LOMETRIC GID转换一逻辑单位为0.1毫米,x向右增加,y向上增加。
MM_HIENGLISH GID转换一逻辑单位为0.001英寸,x向右增加,y向上增加。
MM_LONGLISH GID转换一逻辑单位为0.01英寸,x向右增加,y向上增加。
MM_TWIPS GID转换一逻辑单位为一缇(1/1440英寸),x向右增加,y向上增加。
MM_ISOTROPIC GID用同等缩放坐标轴转换一逻辑单位为任意单位。
MM_ANISOTROPIC GID用任意缩放坐标轴转换一逻辑单位为任意单位 。
使用映射模式例:http://hi.baidu.com/_ynbg/blog/item/e89fb8a8185fdae71f17a215.html
http://hi.baidu.com/_ynbg/blog/item/93659780c5550fc3bd3e1e32.html

六、光栅

光栅,一种网板。
蒙板,使窗口客户区显示“非矩形”图像的一种图像。
显示“非矩形”图像:首先创建蒙板图像位图与待显示图像位图,其次使用光栅操作SRCAND显示蒙板,接着使用光栅操作SRCCOPY将待显示图像位图复制到与蒙板同一坐标下,然后使用光栅操作SRCPAINT显示图像,显示“非矩形”图像结束。

光栅操作,使用逻辑操作符确定源像素与目标像素的组合方式。
两类光栅操作:
位图光栅操作,用于绘制屏幕图像的光栅操作,是使用StretchDIBits()、BitBlt()等函数的光栅操作。
例:http://hi.baidu.com/_ynbg/blog/item/0b3dcdd03705a3239a502746.html
线光栅操作,用于绘制屏幕线条的光栅操作,是以画笔颜色为源像素,使用SetROP2()函数设置光栅操作模式之光栅操作。
例:http://hi.baidu.com/_ynbg/blog/item/e6e26051567ec979843524d7.html
http://hi.baidu.com/_ynbg/blog/item/6e7730ee86227f2dadafd547.html

七、区域

区域(region),用CRgn类表示、用CRgn对象管理的屏幕上的一块面积,可以是矩形,也可以是一组矩形、椭圆和多边形。
使用区域,首先创建CRgn对象,然后使用CRgn类之创建函数来创建区域,最后使用绘制函数绘制区域于屏幕。
例:http://hi.baidu.com/_ynbg/blog/item/f9c453d2c3ce642f960a16ac.html
组合区域,用CombineRgn()函数将几个区域组合而成的区域。
例:http://hi.baidu.com/_ynbg/blog/item/3d0309d2fb413ac4a8ec9a01.html。

八、路径

路径(path),类似于区域的仅包含直线、曲线的形状。
子路径(subpath),路径内的路径。
使用路径,首先用BeginPath()函数开始创建路径,后用EndPath()函数结束创建,最后用显示路径函数与屏幕上显示路径(一组形状)。
例:http://hi.baidu.com/_ynbg/blog/item/fbd5b0fa8374807f024f56f4.html。