Cairo 定义
最后修改于 2023 年 7 月 17 日
在本篇 Cairo 图形教程中,我们将提供一些 Cairo 图形库的有用定义。这将帮助我们更好地理解 Cairo 的绘图模型。
上下文
在 Cairo 中,绘图是通过 Context 完成的。Cairo 上下文保存了描述如何进行绘图的所有图形状态参数。这包括线宽、颜色、绘图目标表面以及许多其他信息。这使得实际的绘图函数可以接受更少的参数,从而简化接口。
在 Cairo 中,所有绘图始终是针对 cairo_t 对象进行的。Cairo 上下文绑定到一个特定的表面。例如 PDF、SVG、PNG、GtkWindow 等。
路径
路径由一个或多个线段组成。这些线段由两个或多个锚点连接。路径可以由直线和曲线组成。路径有两种类型:开放路径和闭合路径。在闭合路径中,起点和终点重合。在开放路径中,起点和终点不重合。
在 Cairo 中,我们从一个空路径开始。首先定义一个路径,然后通过描边(stroking)和填充(filling)使其可见。一个重要的注意事项:每次调用 cairo_stroke
或 cairo_fill
函数后,路径都会被清空。我们必须定义一个新的路径。
路径由子路径组成。
来源
源(source)是我们用于绘图的绘制物。我们可以将源比作我们用来绘制轮廓和填充形状的笔或墨水。有四种基本类型的源:颜色、渐变、图案和图像。
表面
表面是我们正在绘制到的目标。我们可以使用 PDF 或 PostScript 表面来渲染文档,或通过 Xlib 和 Win32 表面直接绘制到平台。
文档中提到了以下表面
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;
遮罩
在将源应用于表面之前,它会先被过滤。遮罩(mask)用作过滤器。遮罩决定了源应用到何处,以及何处不应用。遮罩的不透明部分允许复制源。透明部分则不允许将源复制到表面。
模式
一个 cairo 模式(pattern)代表在表面上绘图时的源。在 cairo 中,模式是可以从中读取的内容,它被用作绘图操作的源或遮罩。cairo 中的模式可以是纯色、基于表面的或渐变模式。
在本章 Cairo 教程中,我们给出了一些基本定义。