Posted on 2008-11-23 20:18
Hill 閱讀(1091)
評論(0) 編輯 收藏 引用
Cairo是一個支持多種輸出設備的2D圖形庫。當前支持的輸出目標(output target)包括:X Window System,Quartz,Win32,image buffers,PostScript,PDF,還有 SVG。
下面研究一下Cairo的繪圖模型,首先是該模型中最重要的三個概念:這三個概念對應于下圖中的三層從上到下分別為:source,mask,destination。簡單的思想就是Source會通過Mask的過濾從而畫在我們的輸出設備(destination)上。
source是用來繪圖的繪圖板,或者筆,墨水,繪圖的時候可以用來畫線,填充。Source可以有以下四種:Colors,Gradients,Patterns和Images。


最下面的destination,是一種surface,是要輸出的設備,可以是窗口,或者一個PDF,SVG等等。因此我們要做的是使用“動詞”構造一個合適的Mask。
Mask被用作一個過濾器。Mask用來決定Source的哪些部分可以應用到destination上,哪些不可以用到destination上。
所有的這三層會對應于一個Context。Context里面包含所有圖形的狀態數據(比如:線的寬度,顏色,surface to draw,還有其它,這就允許繪圖函數使用少量的參數來繪圖)。Mask層上不透明的部分可以應用到destination上,透明的地方剛不會。
這些“動詞”包括:Stroke和Fill。Stroke允許path附近的source通過mask。而fill允許path內部的元素通過mask。(The stroke operation draws the outlines of shapes and the fill operation fills the insides of shapes.)另外的動詞還包括Paint,Mask和ShowText等。
更多請參考這里:http://www.cairographics.org/tutorial/