极语言官方网站

增强绘图(GDI+)编程基础

Windows GDI+ GDI+ 可用于所有基于 Windows 的应用程序。

是在 Windows XP 和 Windows Server 2003 中引入的一组API,负责在屏幕上和打印机上显示信息。

顾名思义,GDI+ 是 Windows 图形设备接口 (GDI) 的后续版本,优化了 GDI 的许多功能。

Windows GDI+ 的服务分为以下三大类:二维向量、图形映像和版式


二维向量图形

矢量图形涉及绘制基元 (例如由坐标系上的点集指定的线条、曲线和图形) 。

例如,直线可以由其两个端点指定,矩形可以通过一个点指定,该点提供其左上角的位置,以及一对数字来指定其宽度和高度。

简单路径可以通过要通过直线连接的点数组来指定。 贝塞尔自由绘制曲线是由四个控制点指定的复杂曲线。


映像

某些种类的图片很难或不可能用矢量图形技术显示。

例如,工具栏按钮上的图片以及显示为图标的图片很难指定为线条和曲线的集合。

使用矢量技术创建拥挤的棒球场的高分辨率数字照片将更加困难。

此类型的图像存储为位图,这些数字数组表示屏幕上各个点的颜色。

存储有关位图的信息的数据结构往往比矢量图形所需的数据结构更复杂,因此 GDI+ 中有多个类专用于此目的。


版式

版式涉及以各种字体、大小和样式显示文本。 GDI+ 为此复杂任务提供了大量支持。

GDI+ 中的一项新功能是次像素抗锯齿,它使在 LCD 屏幕上呈现的文本外观更流畅。


第一节 初始化绘图


在GDI+中,通过调用 绘图启动 函数可以初始化GDI+,而通过调用 绘图结束 函数可以结束对GDI+引用。

需要注意的是,这两个函数是成对出现的。

编写自定义GDI+初始化过程和GDI+结束过程,其代码如下所示:

整数 令牌;//申请一个全局整数变量作为绘图启动的初始化标志
绘图启动类 绘图(版本=1);//申请一个绘图启动类,版本必须指定为1
程序段 初始化绘图
如果(令牌=0)绘图启动(@令牌,绘图,0)
结束
程序段 关闭绘图
如果(令牌)绘图结束(令牌)
结束

可以在窗体启动过程中调用初始化过程来初始化GDI+,并在程序结束过程中调用关闭绘图来结束对GDI+的引用。

绘图启动-函数功能

中文名字英文名称参数作用解释
绘图启动GdiplusStartup3初始化 Windows GDI+。 在进行任何其他 GDI+ 调用之前调用
绘图启动——参数表
令牌token整数指向接收令牌的整数指针。
输入input整数指向包含 GDI+ 版本的 绘图启动类 结构的指针。
输出output整数指向 绘图输出类 结构的指针。如果输入参数的 后台 成员为假,则此参数可以为0。

绘图启动类

中文名字英文名称长度作用解释
绘图启动类GdiplusStartupInput16包含GdiplusStartup函数所需的一个参数块。
绘图启动类——成员表
版本GdiplusVersion整数必须为1
调试DebugEventCallback整数可以在调试版本上调用的回调函数的指针
后台SuppressBackgroundThread整数指定是否禁止显示 GDI+ 后台线程的布尔值。
解码SuppressExternalCodecs整数指定是否希望 GDI+ 禁止显示外部图像编解码器的布尔值。

绘图调试回调

中文名字英文名称参数作用解释
绘图调试回调DebugEventProc2在应用程序中实现并传递给 绘图启动类 构造函数的回调函数的签名。
绘图调试回调——成员表
级别level整数表示调试事件的级别。0致命级别,1警告级别
信息message整数指向包含调试事件消息的窄字符串的指针。

绘图输出类

中文名字英文名称长度作用解释
绘图输出类GdiplusStartupOutput8绘图启动 函数在其输出参数中 指向挂钩函数和脱钩函数的指针。
绘图输出类——成员表
挂钩NotificationHookProc整数接收指向挂钩函数的指针。
脱钩NotificationUnhook整数接收指向挂钩函数的指针。

绘图挂钩回调

中文名字英文名称参数作用解释
绘图挂钩回调NotificationHookProc1绘图输出类 结构中返回的通知挂钩函数的签名。
绘图挂钩回调——参数表
牌号token整数指向包含令牌的整数指针。

绘图脱钩回调

中文名字英文名称参数作用解释
绘图脱钩回调NotificationUnhook1绘图输出类 结构中返回的通知脱钩函数的签名。
绘图脱钩回调——参数表
牌号token整数指向包含令牌的整数指针。

创建图形设备对象

图形设备是GDI+程序设计的基础对象,包括绘制图像、输出文本、

绘制几何图形和填充以及坐标系统的变换等各种操作都是建立在该对象基础上的。

在GDI+中,可以根据设备、窗口和图像等不同的对象句柄分别调用 设备取图、

窗口取图和图像取图 等不同创建函数的来创建图形设备对象。

在函数表示例参数中,图形设备对象简称为图形,也是为了跟基础绘图GDI的设备进行区分。函数名里简称绘图或者绘、图