Posted on 2008-11-23 20:18
Hill 閱讀(1091)
評(píng)論(0) 編輯 收藏 引用
Cairo是一個(gè)支持多種輸出設(shè)備的2D圖形庫。當(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。簡單的思想就是Source會(huì)通過Mask的過濾從而畫在我們的輸出設(shè)備(destination)上。
source是用來繪圖的繪圖板,或者筆,墨水,繪圖的時(shí)候可以用來畫線,填充。Source可以有以下四種:Colors,Gradients,Patterns和Images。


最下面的destination,是一種surface,是要輸出的設(shè)備,可以是窗口,或者一個(gè)PDF,SVG等等。因此我們要做的是使用“動(dòng)詞”構(gòu)造一個(gè)合適的Mask。
Mask被用作一個(gè)過濾器。Mask用來決定Source的哪些部分可以應(yīng)用到destination上,哪些不可以用到destination上。
所有的這三層會(huì)對(duì)應(yīng)于一個(gè)Context。Context里面包含所有圖形的狀態(tài)數(shù)據(jù)(比如:線的寬度,顏色,surface to draw,還有其它,這就允許繪圖函數(shù)使用少量的參數(shù)來繪圖)。Mask層上不透明的部分可以應(yīng)用到destination上,透明的地方剛不會(huì)。
這些“動(dòng)詞”包括:Stroke和Fill。Stroke允許path附近的source通過mask。而fill允許path內(nèi)部的元素通過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/