Cairo是一個(gè)支持多種輸出設(shè)備的2D圖形庫(kù)。當(dāng)前支持的輸出目標(biāo)(output target)包括:X Window System,Quartz,Win32,image buffers,PostScript,PDF,還有 SVG。
下面研究一下Cairo的繪圖模型,首先是該模型中最重要的三個(gè)概念:這三個(gè)概念對(duì)應(yīng)于下圖中的三層從上到下分別為:source,mask,destination。簡(jiǎn)單的思想就是Source會(huì)通過(guò)Mask的過(guò)濾從而畫在我們的輸出設(shè)備(destination)上。
source是用來(lái)繪圖的繪圖板,或者筆,墨水,繪圖的時(shí)候可以用來(lái)畫線,填充。Source可以有以下四種:Colors,Gradients,Patterns和Images。
最下面的destination,是一種surface,是要輸出的設(shè)備,可以是窗口,或者一個(gè)PDF,SVG等等。因此我們要做的是使用“動(dòng)詞”構(gòu)造一個(gè)合適的Mask。
Mask被用作一個(gè)過(guò)濾器。Mask用來(lái)決定Source的哪些部分可以應(yīng)用到destination上,哪些不可以用到destination上。
所有的這三層會(huì)對(duì)應(yīng)于一個(gè)Context。Context里面包含所有圖形的狀態(tài)數(shù)據(jù)(比如:線的寬度,顏色,surface to draw,還有其它,這就允許繪圖函數(shù)使用少量的參數(shù)來(lái)繪圖)。Mask層上不透明的部分可以應(yīng)用到destination上,透明的地方剛不會(huì)。
這些“動(dòng)詞”包括:Stroke和Fill。Stroke允許path附近的source通過(guò)mask。而fill允許path內(nèi)部的元素通過(guò)mask。(The stroke operation draws the outlines of shapes and the fill operation fills the insides of shapes.)另外的動(dòng)詞還包括Paint,Mask和ShowText等。
更多請(qǐng)參考這里:http://www.cairographics.org/tutorial/