PyCairo简介

446 阅读3分钟
原文链接: blog.csdn.net

这里是 PyCairo 教程。这份教程将以 Python 语言,教你 Cairo 2D 库的基本的和一些高级的主题。在大多数例子中,我们将会使用 Python GTK 后端来产生我们的输出。本教程中所用到的那些图片可以在 此处 下载。

计算机图形学

有两种不同的计算机图形学。向量图形学和光栅图形学。光栅图形学以一个像素的集合来表示图片。向量图形学使用几何元素,比如点,直线,曲线或者多边形来表示图片。这些元素使用数学方程式来创建。

两种计算机图形类型都有优点和缺点。向量图相对于光栅图的优点是:

  • 占用空间小
  • 具有无限放大的能力
  • 移动,缩放,填充或者旋转不会降低一幅图片的质量

Cairo

Cairo是一个用于创建2D向量图的库。它是用 C 程序语言写的。已经有一些到其他计算机语言的绑定出现了。Python,Perl,C++,C#,Java。Cairo是一个多平台的库,可以工作于Linux,BSDs和OSX上。

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

  • X Window System
  • Win32 GDI
  • Mac OS X Quartz
  • PNG
  • PDF
  • PostScript
  • SVG

这意味着,我们可以使用Cairo库在Linux/BSDs,Windows,OSX的窗口中绘制图形,同时也可以使用这个库来创建PNG图像,PDF文件,PostScript文件和SVG文件。

我们可以对比cairo库和Windows OS上的GDI+库,及Mac OS上的Quartz 2D库。Cairo是一个开源软件库。自2.8版起,Cairo就是GTK系统的一部分了。

定义

这里我们将提供一些有用的定义。为了使用PyCairo绘制一些东西,我们必须先创建一个绘制上下文( drawing context ).绘制上下文包含描述如何绘制的所有的图形状态参数。这包括线的宽度,颜色,绘制到的surface和许多其他东西的信息。这将使得实际的绘图函数可以接收更少的参数而简化接口。

一个path是一个用于创建基本形状如直线,圆弧和曲线等的点的集合。有两种类型的paths。开的和闭合的paths。在一个闭合的path中,起点和终点相接。在一个开的path中,起点与终点不相接。在PyCairo中,我们以一个空的path开始。首先,我们定义一个path,然后我们通过stroking和/或填充它们来使其可见。每一次调用stroke()或者fill()方法之后,path会被清空。我们不得不定义一个新的path。如果我们想要在绘制之后保持既有的path,我们可以使用stroke_preserve()和fill_preserve()方法。一个path由subpaths组成。

一个source是我们绘制时所用的画笔。我们可以把source看作一支笔或者墨水,我们使用它们来画轮廓线或者填充形状。总共有四种类型的基本source,颜色(Colors),渐变(gradients),模式(patterns)和图像(images)。

一个surface是我们将要绘制的一个目的地。我们可以使用PDF或者PostScript surfaces来渲染文档,或者可以通过Xlib和Win32 surfaces来直接绘制到平台上。

在source被应用于surface之前,它会先被过滤。mask被用作一个滤镜。它决定什么地方的source被应用,而什么地方的不应用。mask不透明的部分允许复制自source。透明的部分不允许由source复制到surface。

一个pattern代表往一个surface绘制时的一个source。在PyCairo中,一个pattern是你可以从中读取,并用作一个绘制操作的source或者mask之类的东西。Patterns可能是纯净的,surface-based或者渐变。

来源

为了创建这份教程,我们使用了一些资料。包括 Apple Cocoa drawing guidePyCairo referenceCairo documentation.

原文