ZetCode

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 支持多种后端。后端是用于显示创建的图形的输出设备。

这意味着我们可以使用该库在 Windows、Linux、Windows、OSX 上绘图,并可以使用该库创建 PNG 图像、PDF 文件、PostScript 文件和 SVG 文件。

我们可以将 Cairo 库与 Windows OS 上的GDI+库和 Mac OS 上的Quartz 2D进行比较。Cairo 是一个开源软件库。从 2.8 版本开始,Cairo 是GTK系统的一部分。

定义

此处我们提供一些有用的定义。要在 PyCairo 中进行绘制,我们必须首先创建一个绘图上下文。绘图上下文包含所有描述如何进行绘制的图形状态参数。这包括诸如线宽、颜色、要绘制的表面等信息。它允许实际的绘图函数接受更少的参数以简化接口。

路径是用于创建线、弧和曲线等基本形状的点集合。路径有两种:开放路径和闭合路径。在闭合路径中,起点和终点重合。在开放路径中,起点和终点不重合。在 PyCairo 中,我们从空路径开始。首先,我们定义一个路径,然后通过描边和/或填充使它们可见。每次调用strokefill方法后,路径都会被清空。我们必须定义一个新路径。如果我们想保留现有路径供以后绘制,我们可以使用stroke_preservefill_preserve方法。路径由子路径组成。

是我们用于绘制的油漆。我们可以将源与我们用于绘制轮廓和填充形状的笔或墨水进行比较。有四种基本源:颜色、渐变、图案和图像。

表面是我们绘制到的目标。我们可以使用 PDF 或 PostScript 表面渲染文档,并通过 Xlib 和 Win32 表面直接绘制到平台。

在将源应用于表面之前,会先对其进行过滤。蒙版用作过滤器。它决定了源的应用位置和不应用的位置。蒙版的非透明部分允许复制源。透明部分不允许将源复制到表面。

图案代表在表面上绘制时的源。在 PyCairo 中,图案是您可以从中读取并用作绘图操作的源或蒙版的内容。图案可以是纯色、基于表面的或渐变的。

来源

为了创建本教程,我们使用了以下材料。Apple Cocoa 绘图指南PyCairo 参考Cairo 文档