图形设备接口GDI

在这里插入图片描述

GAL(Graphics Abstract Layer):图形抽象层,提供了图形抽象接口,用于图形的显示;
GDI(Graphics Device Interface): 基于GAL为上层应用程序提供图形相关的接口,如绘曲线、输出文本、填充矩形等等。

图形设备环境(Device Context)

Device Context,DC,也称作“图形设备环境”。每个图形设备上下文定义了图形输出设备或内存中的一个矩形的显示输出区域,以及相关的图形属性。在调用图形输出函数时,均要求指定经初始化的图形设备上下文。也就是说,所有的绘制操作都必须在某个图形设备上下文之内起作用。

应用程序在响应 MSG_PAINT 消息时执行窗口绘制。接收到 MSG_PAINT 消息时,应用程序应调用BeginPaint 函数来获得设备上下文句柄,并用它调用 GDI 函数来执行更新客户区所必需的绘制操作。绘制结束之后,应用程序应调用EndPaint 函数释放设备上下文句柄。

BeginPaint 函数用来完成绘制窗口之前的准备工作。它首先通过 GetClientDC 函数获得窗口客户区的设备上下文,把设备上下文的剪切域设置为窗口的无效区域。窗口内只有那些改变了的区域才重新绘制,对剪切域以外的任何绘制尝试都被裁减掉,不会出现在屏幕上。为了不影响绘制操作,BeginPaint 函数隐藏了插入符。最后,BeginPaint 将窗口的无效区域清除,避免不断产生 MSG_PAINT 消息,然后返回所获取的设备上下文句柄。

应用程序绘制完成之后应调用 EndPaint 函数终结整个绘制过程。EndPaint 函数的主要工作是调用 ReleaseDC 函数释放由 GetClientDC 函数获取的设备上下文。

应用程序一般在一个图形上下文(graphics context)上调用图形系统提供的绘制原语进
行绘制。上下文是一个记录了绘制原语所使用的图形属性的对象。这些属性通常包括:

  • 前景色(画笔),绘制时所使用的颜色值或图像。
  • 背景色或填充位图(画刷),绘制原语在填充时所使用的颜色或图像。
  • 绘制模式,描述前景色与已有的屏幕颜色如何组合。常见的选项是覆盖已有的屏幕内容或把绘制颜色和屏幕颜色进行“XOR”位逻辑运算。XOR 模式使得绘制对象可以通过重绘进行擦除。
  • 填充模式,描述背景色或图像与屏幕颜色如何组合。常见的选项是覆盖或透明,也就是忽略背景和已有的屏幕内容。
  • 颜色掩蔽,它是一个位图,用于决定绘制操作对屏幕象素影响的风格。
  • 线形,它的宽度、端型和角型。
  • 字体,字体通常是对应于某个字符集的一组位图。字体一般通过指定其大小、磅值、类别和字符集等属性进行选择。
  • 绘制区域,在概念上是一个大小和位置可以为任意值的、映射到窗口之上的视口。可以通过改变视口的原点来移动视口。有时候系统允许视口的缩放。
  • 剪切域,在该区域内绘制原语才有实效。剪切域之外的输出将不被绘制出来。剪切域主要用于重绘,由各个窗口的有变化的区域相交而成。应用程序可以调整剪切域, 增加需要改变的区域。
  • 当前位置,例如可以通过 MoveTo 和 LineTo 等绘制原语来画线。

设备上下文中包含许多确定 GDI 函数如何在设备上工作的当前属性,这些属性使得传递给 GDI 函数的参数可以只包含起始坐标或者尺寸信息,而不必包含在设备上显示对象时需要的其它信息,因为这些信息是设备上下文的一部分。当你想改变这些属性之一时,你可以调用一个可以改变设备上下文属性的函数,以后针对该设备上下文的 GDI 函数调用将使用改变后的属性。设备上下文实际上是 GDI 内部保存的数据结构。设备上下文与特定的显示设备相关。例如,对于 TextOut 函数,设备上下文的属性确定了文本的颜色、背景色、x 坐标和 y坐标映射到窗口客户区的方式,以及显示文本时使用的字体。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值