PyCairo 入门
最后修改于 2023 年 7 月 17 日
这是 PyCairo 教程。本教程将教授您使用 Python 语言的 Cairo 2D 库的基础知识和一些高级主题。在大多数示例中,我们使用 Python GTK 后端来生成输出。本教程中使用的图像可以 在此处 下载。
计算机图形学
计算机图形学有两种:矢量图形和栅格图形。栅格图形将图像表示为像素的集合。矢量图形是使用点、线、曲线或多边形等几何图元来表示图像。这些图元是使用数学方程创建的。
两种类型的计算机图形都有优点和缺点。矢量图形相对于光栅图形的优点是
- 尺寸更小
- 可以无限缩放
- 移动、缩放、填充和旋转不会降低图像质量
Cairo
Cairo 是一个用于创建 2D 矢量图形的库。它用 C 编程语言编写。也存在其他计算机语言的绑定,包括 Python、Perl、C++、C# 或 Java。Cairo 是一个跨平台库;它可以在 Linux、BSDs、Windows 和 OSX 上运行。
Cairo 支持多种后端。后端是用于显示创建的图形的输出设备。
- X Window 系统
- Win32 GDI
- Mac OS X Quartz
- PNG
- PostScript
- SVG
这意味着我们可以使用该库在 Windows、Linux、Windows、OSX 上绘图,并可以使用该库创建 PNG 图像、PDF 文件、PostScript 文件和 SVG 文件。
我们可以将 Cairo 库与 Windows OS 上的GDI+库和 Mac OS 上的Quartz 2D进行比较。Cairo 是一个开源软件库。从 2.8 版本开始,Cairo 是GTK系统的一部分。
定义
此处我们提供一些有用的定义。要在 PyCairo 中进行绘制,我们必须首先创建一个绘图上下文。绘图上下文包含所有描述如何进行绘制的图形状态参数。这包括诸如线宽、颜色、要绘制的表面等信息。它允许实际的绘图函数接受更少的参数以简化接口。
路径是用于创建线、弧和曲线等基本形状的点集合。路径有两种:开放路径和闭合路径。在闭合路径中,起点和终点重合。在开放路径中,起点和终点不重合。在 PyCairo 中,我们从空路径开始。首先,我们定义一个路径,然后通过描边和/或填充使它们可见。每次调用stroke
或fill
方法后,路径都会被清空。我们必须定义一个新路径。如果我们想保留现有路径供以后绘制,我们可以使用stroke_preserve
和fill_preserve
方法。路径由子路径组成。
源是我们用于绘制的油漆。我们可以将源与我们用于绘制轮廓和填充形状的笔或墨水进行比较。有四种基本源:颜色、渐变、图案和图像。
表面是我们绘制到的目标。我们可以使用 PDF 或 PostScript 表面渲染文档,并通过 Xlib 和 Win32 表面直接绘制到平台。
在将源应用于表面之前,会先对其进行过滤。蒙版用作过滤器。它决定了源的应用位置和不应用的位置。蒙版的非透明部分允许复制源。透明部分不允许将源复制到表面。
图案代表在表面上绘制时的源。在 PyCairo 中,图案是您可以从中读取并用作绘图操作的源或蒙版的内容。图案可以是纯色、基于表面的或渐变的。
来源
为了创建本教程,我们使用了以下材料。Apple Cocoa 绘图指南、PyCairo 参考和Cairo 文档。