第5章,[标签 Win32] :GDI 的其他方面的分类

专栏导航

上一篇:第5章,[标签 Win32] :GDI 的基本图形

回到目录

下一篇:无

本节前言

对于本节所讲解的知识,有可能,你会需要时不时地参考本专栏的其它文章。真的遇到了需要参考之前的文章的知识点,请你自行查阅。

我呢,也会提到一部分的参考课节。但是呢,你不应该依赖于我的主动提及。最好呢,你自己能够多去了解和查看本专栏目录。

本节内容,来自于对佩措尔德原教材的大段抄录。

我们开始。

一. 本节内容

GDI 的其他方面就不太容易分类了,具体如下。

(一)映射模式(mapping mode)和转换(transform)

尽管在默认时是以像素为单位进行绘制的,但并不是别无选择。GDI 的映射模式允许以英寸(甚至是几分之一英寸)、毫米或者其他你所想要的任何单位进行绘制。除此之外,Windows NT 支持传统的 3×3 矩阵表示的世界坐标转换(world transform)。这用于倾斜和旋转图形对象。Windows 98 不支持世界坐标转换。而当前,大家使用的 Windows 系统,都属于 Windows NT 系统。无论是 Windows XP,还是 Win7,Win8,Win10,还是 Win11,都是属于 Windows NT 系统,它们都支持世界坐标转换。

(二)图元文件(metafile)

这个术语,也许你比较陌生。一个图元文件是以二进制形式存储的 GDI 命令的集合。图元文件主要用于通过剪贴板转换矢量图形绘制的表现形式。我们将在以后的某一章节讨论图元文件。

(三)区域(region)

区域是一个任意形状的封闭图形,通常可以表示为由一系列简单区域进行布尔运算后得到的结果。在 GDI 内部,可以使用一个从已知区域出发的一系列扫描线来定义一个复杂的区域。可以使用区域进行轮廓绘制、填充或者剪裁。

(四)路径(path)

路径是存储在 GDI 内部的直线和曲线的集合。可以用于绘制、填充和剪裁。路径还可以转换为区域。

(五)剪裁(clipping)

当绘图被限制在客户区的一个特定的空间位置时,就发生了剪裁。那个特定的空间位置可以是矩形或者非矩形,它通常被指定为一个区域或者一个路径。

(六)调色板(palettes)

仅在支持 256 种颜色时,才能使用自定义的调色板。Windows 仅保留其中的 20 种色彩以供系统使用。你可以改变其它 236 种色彩,这样就可以准确显示按位图形式存储的真实图像。我们将在以后的某一章节讲解调色板。

实际上,关于调色板的知识,它只能是作为一种讲解材料。因为,今天的显示器,基本上都已经是真彩色了,它不支持 256 种颜色的模式。在这种情况下,关于调色板的程序,有好多内容,它在现如今的Windows 系统中,是不能正常运行的。

然而,我们还是要去讲解调色板的知识。那是因为,尽管 PC 和 PC 端显示器不支持调色板,然而,在一些个嵌入式领域,仍然会用到调色板的支持。如果你去阅读与学习早期的程序源代码,很可能还会遇到使用调色板的代码。因此,我们出于知识完整性的考虑,我们依然会讲解调色板。

(七)打印机(printing)

尽管本章只讨论视频显示器,但在本章学到的所有知识几乎都可以应用于打印机。我们将在以后的某一章,来讲解打印机知识。

关于打印机,我认为,在 Windows API 章节中讲解的知识,它是一种原理性知识,是一种理论基础,而实用性不大。而当我们去学习 MFC,并在 MFC 中学习关于打印机的知识的时候,我们所接触到的,才会是具有实用性的知识的。

当你在 Windows API 章节中,学习到打印机章节时,你应该只需要学习代码与原理。当你在 MFC 章节中学习打印机知识时,就可以考虑着,使用你所编写的程序,来打印程序中的内容了。不要担心你没有物理打印机。在预算不足的情况下,你可以不去购买现实的物理打印机,只需要安装 WPS 办公软件就可以了。安装了 WPS 办公软件以后,当你使用 MFC 知识来编写打印机程序,并且启动打印时,WPS 软件的相关模块,就会启动一个模拟性质的打印机,并通过构建一个 PDF 文件,来模拟着打印成果。

学习 MFC 中的打印机知识的时候,我挺感谢金山软件公司的。多亏了有他们的 WPS 软件及其打印机模拟模块,我才能在买不起物理打印机的情况下,学习打印机程序。

关于打印机这一块,我也建议你好好学习。

结束语

本节知识不难,都是介绍性的知识。

某些地方,我在原版的佩措尔德教材内容的基础上,增添了自己的一点理解。

本节结束。

专栏导航

上一篇:第5章,[标签 Win32] :GDI 的基本图形

回到目录

下一篇:无

相关推荐
AI进化营-智能译站1 小时前
ROS2 C++开发系列17-多线程驱动多传感器|chrono高精度计时实现机器人同步控制
java·c++·ai·机器人
天若有情6734 小时前
程序员原创|借鉴JS事件冒泡,根治电脑文件混乱的“冒泡整理法”
开发语言·javascript·windows·ecmascript·电脑·办公·日常
墨染千千秋4 小时前
C++函数的使用以及主函数
c++
九成宫4 小时前
Outlook使用
windows·笔记·outlook·办公
特种加菲猫5 小时前
继承,一场跨越时空的对话
开发语言·c++
WBluuue5 小时前
Codeforces 1093 Div2(ABCD1D2)
c++·算法
盘古工具5 小时前
【分享】打开PDF文件的几种方式
windows·pdf
玩转单片机与嵌入式6 小时前
玩转边缘AI(TInyML):需要掌握的C++知识汇总!
开发语言·c++·人工智能
历程里程碑6 小时前
4 Git远程协作:从零开始,玩转仓库关联与代码同步(带实操代码讲解)
大数据·c++·git·elasticsearch·搜索引擎·gitee·github
汉克老师7 小时前
GESP5级C++考试语法知识(贪心算法(一)课堂例题精讲)
c++·贪心算法·gesp5级·gesp五级·贪心规律