ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

第5章,[Win32 章节] :使用现有画笔

第5章,[Win32 章节] :使用现有画笔 专栏导航上一篇第5章[Win32 章节] 贝塞尔样条曲线二回到目录下一篇第5章[Win32 章节] 创建、选择和删除画笔本节前言对于本节所讲解的知识有可能你会需要时不时地参考本专栏的其它文章。真的遇到了需要参考之前的文章的知识点请你自行查阅。我呢也会提到一部分的参考课节。但是呢你不应该依赖于我的主动提及。最好呢你自己能够多去了解和查看本专栏目录。本节我们要来讲画笔了。它是一个很有趣的 GDI 对象。以后我们还要去学习 GDI 画刷、GDI 位图、GDI 字体等等的东西。对于GDI 对象它的有趣的一点是你可以使用系统备用的对象如果不使用系统备用的对象那么你需要手动去创建它。无论是使用备用对象还是手动创建你都需要将其选入设备环境已选入设备环境的 GDI 对象才能够在绘图中使用它。当你用完了相应的 GDI 对象以后你还需要将它选出设备环境。然后呢如果选出的 GDI 对象是系统备用的对象那你的工作就结束了。如果选出的 GDI 对象是你自己手动创建的那么你还需要将其删除掉然后你的工作才算是结束。在这里呢我们将创建 GDI 对象的步骤简称为创建将把 GDI 对象选入设备环境的步骤简称为选入将把 GDI 对象选出设备环境的步骤简称为选出最后将删除 GDI 对象的步骤简称为删除。这种创建、选入、使用 GDI 对象、选出、删除的流程我觉得是非常专业和有趣的。我在学习 GDI 的各种对象的时候我就非常喜欢这么一套流程。我在这种使用流程之中感受到了 Windows 的专业与强大。本节我们算是初次接触一个 GDI 对象的使用流程中的一个使用现有画笔也就是使用系统备用的 GDI 画笔。其余的步骤我们以后会讲。本节内容来自于对佩措尔德教材的大段抄录。一. 本节内容调用本节介绍的任何一个画线函数时Windows 都会使用当前选入设备环境的 “画笔” 来绘制直线。画笔决定了线条的颜色、宽度和样式样式可以是实线、点线或者虚线。画笔的默认设备环境是 BLACK_PEN 。该画笔会绘制一条实心的、宽度为 1 个像素的黑色线条。BLACK_PEN 是 Windows 提供的三种 “备用画笔”stock pen中的一种。另外两种分别是 WHITE_PEN 和 NULL_PEN 。NULL_PEN 表示不会只任何图形的画笔这个画笔是很有用的。你也可以创建自己的画笔。但是本节我们不讲如何创建自定义画笔我们只讲如何使用系统备用的画笔。在 Windows 程序中使用句柄来操作画笔。 Windows 头文件 WinDef.h 定义画笔句柄的类型为 HPEN 。可以使用这个类型定义一个变量。例如 hPen 。HPEN hPen;调用 GetStochObject 函数可以获取备用画笔的句柄。例如想使用名为 WHITE_PEN 的备用画笔。可以按照如下方式获取画笔句柄。hPen GetStockObject (WHITE_PEN);现在我们需要把这个画笔选入设备环境。SelectObject (hdc, hPen);现在当前画笔变成白色画笔。也就是说在该函数调用之后绘制的所有线条都将使用 WHITE_PEN 直到将另一种画笔选入设备环境或者你释放了设备环境句柄。除了明确地定义 hPen 变量还可以将 GetStockObject 调用和 SelectObject 调用组合在一条语句中。SelectObject (hdc, GetStockObject (WHITE_PEN));接着如果想恢复使用 BLACK_PEN也可以只使用一条语句来获取那个备用对象 BLACK_PEN 的句柄同时将它选入设备环境。SelectObject (hdc, GetStockObject (BLACK_PEN));SelectObject 函数返回一个先前选入设备环境的画笔的句柄。如果使用一个新的设备环境并且书写了下面的代码。hPen SelectObject (hdc, GetStockObject (WHITE_PEN));那么设备环境中的当前画笔就变为 WHITE_PEN变量 hPen 将是 BLACK_PEN 画笔的句柄。可以接着通过下面的调用将 BLACK_PEN 重新选入设备环境。SelectObject (hdc, hPen);我们推荐应用下面的框架来使用 GDI 备用画笔。HPEN hPen; hPen SelectObject (hdc, GetStockObject (某种备用画笔标识)); /****** 使用画笔来绘图的代码的起始 *******/ ................ [使用画笔来绘图] [使用画笔来绘图] [使用画笔来绘图] ................ /****** 使用画笔来绘图的代码的结束 *******/ SelectObject (hdc, hPen);上述伪代码我相信你能够看懂它。结束语本节内容应该是不难理解的。在结尾部分的代码框架这是我自己加上的。学习愉快啊。本节结束。专栏导航上一篇第5章[Win32 章节] 贝塞尔样条曲线二回到目录下一篇第5章[Win32 章节] 创建、选择和删除画笔
返回列表