更改

跳转至: 导航搜索

QuickDraw

添加6,685字节2019年1月25日 (五) 23:29
创建页面,内容为“本条目参考:[https://zhuanlan.zhihu.com/p/55254209 知乎专栏文章],专栏文章参考英文维基的 [https://en.wikipedia.org/wiki/QuickDraw QuickDraw]…”
本条目参考:[https://zhuanlan.zhihu.com/p/55254209 知乎专栏文章],专栏文章参考英文维基的 [https://en.wikipedia.org/wiki/QuickDraw QuickDraw]、[https://en.wikipedia.org/wiki/QuickDraw_GX QuickDraw GX] 及 [https://en.wikipedia.org/wiki/QuickDraw_3D QuickDraw 3D] 所在条目。<br>

QuickDraw 是 Classic Mac OS 平台核心的 2D 图形库与 API,它最初由 Bill Atkinson 与 Andy Hertzfeld 开发,前身是 Apple Lisa 平台的 LisaGraf。<br>
<br>
Mac OS X 中苹果启用了全新的 Quartz 图形引擎,但仍然将 QuickDraw 作为 [https://en.wikipedia.org/wiki/Carbon_(API) Carbon API] 的一部分保留在系统内。<br>

从 10.4 Tiger 开始官方放弃了 QuickDraw,10.5 Leopard 开始使用 QuickDraw 开发的应用不再支持 64 位,10.8 Mountain Lion 移除了系统对 QuickDraw 头文件的支持。<br>

使用 QuickDraw 开发的应用仍可在 OS X 10.8 - macOS Sierra 10.12 下运行,但 macOS SDK 与 Xcode 不再能够编译使用 QuickDraw 的工程。<br>

2010 年,美国计算机历史博物馆(Computer History Museum)收录并公开了历史版本 QuickDraw 与 MacPaint 1.3 的源代码,MacPaint 也是使用 QuickDraw 的应用程序。<br>

[[File:MacpaintWP.png|缩略图|MacPaint]]




=== 理论概述 ===
''条目中所有原理描述截取自官方文档:[https://developer.apple.com/library/archive/documentation/mac/pdf/ImagingWithQuickDraw.pdf Imaging with QuickDraw (PDF)]''<br>


QuickDraw 是一个[https://zh.wikipedia.org/wiki/%E4%BD%8D%E5%9B%BE 位图系统],像素在该系统中作为表示图像数据的基本单位。<br>

该系统定义的基础数据结构是称为 GrafPort 的图形容器,它代表逻辑上的绘制区域。<br>

GrafPort 中最明显的「对象」是窗口,每个窗口都代表各自独立的 GrafPort 图形容器,用户创建窗口时将由窗口管理器使用 QuickDraw 来创建图形容器并显示内容。<br>
此处的窗口内容区域不包含窗口边框、投影和可能存在的标题栏。另外,整个桌面视图也能被看作一个 GrafPort 容器。<br>

[[File:QuickDraw1.png|缩略图|在 QuickDraw 中显示含灰阶图像的窗口的所需过程]]

同时,GrafPort 将整个图形界面定位为一个坐标系,整个 QuickDraw 系统可提供 16 位分辨率,这代表着 65536 个独立的横向或纵向位置,坐标点的范围从 -32767 到 +32768。<br>

<gallery>
File:QuickDraw2.png|GrafPort 定义的坐标系
File:QuickDraw3.png|QuickDraw 全局坐标系
</gallery>

[[File:QuickDraw4.png|缩略图|180*300px 示例窗口在 QuickDraw 全局与窗口自身坐标系中的定位方式]]

在坐标系内,横纵网格线的交点称为点(point),而每一个像素则位于所在点的右下方,也可以说是位于构成坐标网格的线之间。<br>
点与网格线本身都极其微小,根据 [https://developer.apple.com/library/archive/documentation/mac/pdf/ImagingWithQuickDraw.pdf Apple 官方开发文档]描述,QuickDraw 可提供超过 40 亿个点。<br>

Macintosh 能显示的像素形状为矩形,由 GrafPort 所定义的默认分辨率是每英寸 72 像素,这和印刷行业标准的每英寸 72 点相匹配。指针光标的像素则为 16*16,组成光标图像的一部分点被称作热区(hot spot),热区需位于可进行鼠标点击交互的对象之上。<br>

像素位于坐标系内的轴线之间,并不与坐标系相交。<br>

[[File:QuickDraw5.png|缩略图|点和像素的关系]]

=== QuickDraw ===
Classic Mac OS 中所有的用户可见元素都由 QuickDraw 生成:

* 直线
* 矩形和圆角矩形
* 圆和椭圆
* 弧形和楔形
* 多边形
* 由像素组合的区域
* 位图与文本
<br>

除文本内容之外,上述元素均由可定义尺寸、颜色、颜色的抽象概念 “笔” 生成,由于 “笔” 的形状是矩形且与坐标轴对齐,因此绘制的对角线会较横或纵向的水平直线更粗。
<br>
“笔” 可以在窗口自身坐标系内绘制内容,例如在下面的示例图中执行了两步操作:
# 将 “笔” 用相关函数移动到坐标系位置(10,20)
# 用相关函数操作 “笔” 绘制直线,终点坐标(50,30)
<br>
<gallery>
File:QuickDraw6.png|直线绘图示例
</gallery>

文本内容则可显示任何已安装的位图点阵字体或 [https://zh.wikipedia.org/wiki/TrueType TrueType 字体]。<br>

QuickDraw 可以由 [https://zh.wikipedia.org/wiki/PostScript PostScript] 页面描述语言控制,相应的打印驱动也可将图形操作转为对应的打印机控制命令,使得 Macintosh 可以应用于桌面出版行业。

在最初,QuickDraw 只支持黑白以及 16 色显示,且 16 色显示和打印功能只被有限的应用程序所支持。<br>

1987 年的 Macintosh II 发布后,苹果扩充了原有 QuickDraw 的内容,升级到 Color QuickDraw ,引入了代表各个连接的显示设备及显卡的 GDevices 与承载颜色的 CGrafPort,从而实现最高 24 位 1677 万色或 256 级灰阶显示及相应的真彩色显示卡支持。<br>

随着 QuickTime 的问世,QuickDraw 又增加了处理 JPEG 等压缩格式的能力与对 [https://en.wikipedia.org/wiki/ColorSync ColorSync 色彩管理技术]的支持。<br>


=== QuickDraw GX ===
在 Mac 转换到 PowerPC 架构的时期,QuickDraw 升级到了 QuickDraw GX 成为新的 2D 图形引擎与打印管理系统,仍然保留和原有 QuickDraw 图像数据结构的兼容性。<br>

QuickDraw GX 面向对象的特性令开发工作更为简易,并增加了原来缺失的部分曲线绘图指令,同时启用 TrueType 作为默认的字体系统。
<br>


=== QuickDraw 3D ===
QuickDraw 3D 是 Macintosh 的 3D 图形 API,基于纯 C 代码,它分为与 Direct3D 或 MiniGL 功能相近的跨平台硬件抽象层 RAVE(Rendering Acceleration Virtual Engine)和面向对象的场景图形系统,可以加载并生成与 OpenGL++ 相似等级的模型,并提供了一系列文件转换功能和标准化 3DMF 模型文件格式,但也存在部分性能问题。<br>

使用 RAVE 的应用包含了在当时随每台 Power Macintosh 发行的 Graphing Calculator 图形计算器以及 [https://en.wikipedia.org/wiki/Quake_(video_game) Quake] 等游戏。

[[File:QD3D2.png|缩略图|Graphing Calculator]]

Classic Mac OS 系统中默认提供支持 QuickDraw 3D 的查看器,例如自带的剪贴册应用。<br>

1998 年苹果放弃了 QuickDraw 3D 的开发,并宣布未来 Mac OS 的 3D 图形部分将由 OpenGL 提供支持。
[[File:QD3D.png|缩略图|通过“剪贴册”查看由 QuickDraw 3D 建立的模型]]
85
个编辑

导航菜单