# Cario 定义

> 原文： [https://zetcode.com/gfx/cairo/cairodefinitions/](https://zetcode.com/gfx/cairo/cairodefinitions/)

在 Cairo 图形教程的这一部分中，我们将为 Cairo 图形库提供一些有用的定义。 这将帮助我们更好地了解 Cairo 绘图模型。

## 上下文

Cairo 中的绘制是通过上下文完成的。 Cairo 上下文包含所有描述绘制方式的图形状态参数。 这包括信息，例如线宽，颜色，要绘制的表面以及许多其他内容。 这允许实际的绘图函数采用较少的参数来简化界面。

使用 Cairo 进行的所有绘制始终都是对`cairo_t`对象完成的。 Cairo 上下文与特定表面相关。 PDF，SVG，PNG，GtkWindow 等。

## 路径

路径由一条或多条线组成。 这些线由两个或多个锚点连接。 路径可以由直线和曲线组成。 路径有两种。 打开和关闭路径。 在封闭的路径中，起点和终点相遇。 在开放路径中，起点和终点不相交。

在 Cairo，我们从一条空路开始。 首先，我们定义一条路径，然后通过抚摸和填充它们使它们可见。 重要说明。 在每个`cairo_stroke()`或`cairo_fill()`函数调用之后，该路径将被清空。 我们必须定义一条新路径。

路径由子路径组成。

## 资源

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

## 表面

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

该文档提到以下方面：

```c
typedef enum _cairo_surface_type {
  CAIRO_SURFACE_TYPE_IMAGE,
  CAIRO_SURFACE_TYPE_PDF,
  CAIRO_SURFACE_TYPE_PS,
  CAIRO_SURFACE_TYPE_XLIB,
  CAIRO_SURFACE_TYPE_XCB,
  CAIRO_SURFACE_TYPE_GLITZ,
  CAIRO_SURFACE_TYPE_QUARTZ,
  CAIRO_SURFACE_TYPE_WIN32,
  CAIRO_SURFACE_TYPE_BEOS,
  CAIRO_SURFACE_TYPE_DIRECTFB,
  CAIRO_SURFACE_TYPE_SVG,
  CAIRO_SURFACE_TYPE_OS2
} cairo_surface_type_t;

```

## 遮罩

在将源应用于表面之前，先对其进行过滤。 遮罩用作过滤器。 遮罩确定在哪里应用源，在哪里不应用。 遮罩的不透明部分允许复制源。 透明零件不允许将源复制到表面。

## 图案

Cairo 图案代表在表面上绘制时的来源。 在 Cairo 中，您可以从中读取图案，该图案用作绘制操作的来源或蒙版。 Cairo 中的图案可以是实心，基于表面或渐变的图案。

在 Cairo 教程的这一章中，我们给出了一些基本定义。