PyCairo简介
這里是 PyCairo 教程。這份教程將以 Python 語(yǔ)言,教你 Cairo 2D 庫(kù)的基本的和一些高級(jí)的主題。在大多數(shù)例子中,我們將會(huì)使用 Python GTK 后端來(lái)產(chǎn)生我們的輸出。本教程中所用到的那些圖片可以在 此處 下載。
計(jì)算機(jī)圖形學(xué)
有兩種不同的計(jì)算機(jī)圖形學(xué)。向量圖形學(xué)和光柵圖形學(xué)。光柵圖形學(xué)以一個(gè)像素的集合來(lái)表示圖片。向量圖形學(xué)使用幾何元素,比如點(diǎn),直線,曲線或者多邊形來(lái)表示圖片。這些元素使用數(shù)學(xué)方程式來(lái)創(chuàng)建。
兩種計(jì)算機(jī)圖形類(lèi)型都有優(yōu)點(diǎn)和缺點(diǎn)。向量圖相對(duì)于光柵圖的優(yōu)點(diǎn)是:
- 占用空間小
- 具有無(wú)限放大的能力
- 移動(dòng),縮放,填充或者旋轉(zhuǎn)不會(huì)降低一幅圖片的質(zhì)量
Cairo
Cairo是一個(gè)用于創(chuàng)建2D向量圖的庫(kù)。它是用 C 程序語(yǔ)言寫(xiě)的。已經(jīng)有一些到其他計(jì)算機(jī)語(yǔ)言的綁定出現(xiàn)了。Python,Perl,C++,C#,Java。Cairo是一個(gè)多平臺(tái)的庫(kù),可以工作于Linux,BSDs和OSX上。
Cairo 支持多種后端。后端是用于顯示所創(chuàng)建的圖形的輸出設(shè)備。
- X Window System
- Win32 GDI
- Mac OS X Quartz
- PNG
- PostScript
- SVG
這意味著,我們可以使用Cairo庫(kù)在Linux/BSDs,Windows,OSX的窗口中繪制圖形,同時(shí)也可以使用這個(gè)庫(kù)來(lái)創(chuàng)建PNG圖像,PDF文件,PostScript文件和SVG文件。
我們可以對(duì)比cairo庫(kù)和Windows OS上的GDI+庫(kù),及Mac OS上的Quartz 2D庫(kù)。Cairo是一個(gè)開(kāi)源軟件庫(kù)。自2.8版起,Cairo就是GTK系統(tǒng)的一部分了。
定義
這里我們將提供一些有用的定義。為了使用PyCairo繪制一些東西,我們必須先創(chuàng)建一個(gè)繪制上下文( drawing context ).繪制上下文包含描述如何繪制的所有的圖形狀態(tài)參數(shù)。這包括線的寬度,顏色,繪制到的surface和許多其他東西的信息。這將使得實(shí)際的繪圖函數(shù)可以接收更少的參數(shù)而簡(jiǎn)化接口。
一個(gè)path是一個(gè)用于創(chuàng)建基本形狀如直線,圓弧和曲線等的點(diǎn)的集合。有兩種類(lèi)型的paths。開(kāi)的和閉合的paths。在一個(gè)閉合的path中,起點(diǎn)和終點(diǎn)相接。在一個(gè)開(kāi)的path中,起點(diǎn)與終點(diǎn)不相接。在PyCairo中,我們以一個(gè)空的path開(kāi)始。首先,我們定義一個(gè)path,然后我們通過(guò)stroking和/或填充它們來(lái)使其可見(jiàn)。每一次調(diào)用stroke()或者fill()方法之后,path會(huì)被清空。我們不得不定義一個(gè)新的path。如果我們想要在繪制之后保持既有的path,我們可以使用stroke_preserve()和fill_preserve()方法。一個(gè)path由subpaths組成。
一個(gè)source是我們繪制時(shí)所用的畫(huà)筆。我們可以把source看作一支筆或者墨水,我們使用它們來(lái)畫(huà)輪廓線或者填充形狀。總共有四種類(lèi)型的基本source,顏色(Colors),漸變(gradients),模式(patterns)和圖像(images)。
一個(gè)surface是我們將要繪制的一個(gè)目的地。我們可以使用PDF或者PostScript surfaces來(lái)渲染文檔,或者可以通過(guò)Xlib和Win32 surfaces來(lái)直接繪制到平臺(tái)上。
在source被應(yīng)用于surface之前,它會(huì)先被過(guò)濾。mask被用作一個(gè)濾鏡。它決定什么地方的source被應(yīng)用,而什么地方的不應(yīng)用。mask不透明的部分允許復(fù)制自source。透明的部分不允許由source復(fù)制到surface。
一個(gè)pattern代表往一個(gè)surface繪制時(shí)的一個(gè)source。在PyCairo中,一個(gè)pattern是你可以從中讀取,并用作一個(gè)繪制操作的source或者mask之類(lèi)的東西。Patterns可能是純凈的,surface-based或者漸變。
來(lái)源
為了創(chuàng)建這份教程,我們使用了一些資料。包括 Apple Cocoa drawing guide,PyCairo reference 和 Cairo documentation.
原文
總結(jié)
- 上一篇: Android low memory k
- 下一篇: PyCairo 后端