设备描述表(Device Context)与着色描述表(Rendering Context)

设备上下文:是由GDI创建、用来代表设备连接的数据结构。

DC的主要功能有:

(1)允许应用程序使用一个输出设备。

(2)提供Windows应用程序、设备驱动和输出设备之间的连接。

(3)保存当前信息,例如,在一个窗口内绘图时使用的颜色,画笔的宽度、画刷的类型,绘制模式调色盘信息、映射模式以及其他的Windows必须知道怎么显示图形的属性。

(4)保存窗口剪切区域,限制程序输出到输出设备中窗口覆盖的区域。

着色描述表:

与其他应用程序一样,OpenGL应用程序也必须应用DC。不过,我们将其称为着色描述表。着色描述表保在了与系统发生联系的重要信息。一个应用程序必须有着色描述表。着色描述表含很多信息,如模型视图信息等。



设备描述表中包含许多确定GDI函数如何在设备上工作的当前“属性”,这些属性允许传递给GDI函数的参数只包含起始坐标或者尺寸信息,而不必包含Windows在设备上显示对象时需要的所有其它信息。例如,上回我们调用TextOut时,我们只需要在函数中给出设备描述表句柄、起始坐标、文字和文字的长度。而不必指定字体、文字颜色、文字后面的背景色彩以及字符间距,因为这些属性都是设备描述表的一部分。当你想改变这些属性之一时,您调用一个可以改变设备描述表中属性的函数(例如把文字颜色设置成红色),以后针对该设备描述表的TextOut调用

就可以使用改变后的属性了(例如可以输出红色字体)。

我在此列出如下表,方便大家查阅。

 

属性

默认值

相关函数

背景色

WHITE

GetBkColor

SetBkColor

背景模式

OPAQUE

GetBkMode

SetBkMode

位图

NONE

CreateBitMap

CreateBitMapIndirect

CreateCompatibleBitmap

SelectObject

画刷

WHITE_BRUSH

CreateBrushIndirect

CreateDIBPatternBrush

CreateHatchBrush

CreatePatternBrush

CreateSolidBrush

SelectObject

画刷起始位置

(0,0)

GetBrushOrg

SetBrushOrg

UnrealizeObject

剪裁域

DISPLAY SURFACE

ExcludeClipRect

IntersetClipRect

OffsetClipRgn

SelectClipPath

SelectObject

SelectClipRgn

颜色调色板

DEFAULT_PALETTE

CreatePalette

RealizePatte

SelectPalette

绘图方式

R2_COPYPEN

GetROP2

SetROP2

字体

SYSTEM_FONT

CreateFont

CreateFontIndirect

SelectObject

字符间距

0

GetTextCharacterExtra

SetTextCharacterExtra

映射方式

MM_TEXT

GetMapMode

SetMapMode

画笔

BLACK_PEN

CreatePen

CreatePenIndirect

SelectObject

多边形填充方式

ALTERNATE

GetPolyFillMode

SetPolyFileMode

缩放模式

BLACKONWHITE

SetStretchBltMode

GetStretchBltMode

文本颜色

BLACK

GetTextColor

SetTextColor

视图范围

(1,1)

GetViewportExtEx

SetViewportExtEx

ScaleViewportExtEx

视图原点

(0,0)

GetViewportOrgEx

  

SetViewportOrgEx

窗口范围

(1,1)

GetWindowExtEx

SetWindowExtEx

ScaleWindowExtEx

窗口原点

(0,0)

GetWindowOrgEx

OffsetWindowOrgEx

SetWindowOrgEx

一般以Get开头的函数作用是获取该属性值,一般以Set开头的函数作用是设置该属性值,若有不太清楚的函数,你就自己动手查吧。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值