# PyCairo 简介

> 原文： [https://zetcode.com/gfx/pycairo/introduction/](https://zetcode.com/gfx/pycairo/introduction/)

这是 PyCairo 教程。 本教程将使用 Python 语言教您 Cairo 2D 库的基础知识和一些高级主题。 在大多数示例中，我们将使用 Python GTK 后端生成我们的输出。 可以在此处下载本教程中使用的图像。

## 计算机图像

有两种不同的计算机图形：矢量图形和栅格图形。 光栅图形将图像表示为像素集合。 矢量图形是使用几何图元（例如点，线，曲线或多边形）来表示图像。 这些基元是使用数学方程式创建的。

两种类型的计算机图形都有优点和缺点。 矢量图形优于栅格的优点是：

*   较小的大小
*   无限放大的能力
*   移动，缩放，填充和旋转不会降低图像质量

## Cairo 

Cairo 是用于创建 2D 矢量图形的库。 它是用 C 编程语言编写的。 存在其他计算机语言的绑定，包括 Python，Perl，C++ ，C# 或 Java。 Cairo 是一个多平台库； 它适用于 Linux，BSD，Windows 和 OSX。

Cairo 支持各种后端。 后端是用于显示创建的图形的输出设备。

*   X Window 系统
*   Win32 GDI
*   Mac OS X 
*   PNG
*   PDF 格式
*   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 制图指南](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaDrawingGuide/Introduction/Introduction.html)， [PyCairo 参考](http://cairographics.org/documentation/pycairo/2/index.html)和[Cairo 文档](http://cairographics.org/documentation/)。