網誌存檔

2010年11月16日 星期二

「轉貼」用 cairo 實現跨平台圖形(3)

7.正確的 cairo 術語
在討論任何技術時,都要使用正確的術語。cairo API 的術語分為三類:核心繪圖術語、外表術語和與字體相關的術語(更多細節見 參考資料)。
首先,cairo 有一個繪圖上下文(drawing context),這相當於畫家的畫布。上下文是 cairo_t 類型的,要呈現圖形,就必須有一個上下文。在繪圖上下文上的常見操作是繪製 Bezier 圖形、直線和曲線。表示一系列曲線和相關數據的 cairo 術語是路徑(path)。可以繪製這些路徑,並設置筆畫寬度或填充。
使用一個非常簡單的 API 將坐標轉換為路徑。這個 API 非常有意義,因為它使我們不必考慮線性代數或圖形學課本中討論的複雜的轉換矩陣。可以對 cairo 繪圖操作執行任何轉換,包括對圖形或部分圖形進行剪切、縮放或旋轉。通過指定點來繪製每條路徑。cairo 按照將點連接起來的方法執行操作。在後面將提供一個示例。
接下來,討論各種 cairo 外表類型。有幾種 cairo 外表類型,它們分別對應一種輸出目標。cairo 外表(surface)是執行繪圖的位置。具體地說,有用於圖像(內存緩衝區)的外表、用於 Open GL 的 glitz 外表、用於呈現文檔的 PDF 和 PostScript 外表以及用於直接執行繪圖的 XLib 和 Win32 外表。這些外表類型都派生自外表基類型 cairo_surface_t。
在 cairo 中,模式(pattern)是一種可以讀取的內容,它用作繪圖操作的源或蒙板。cairo 中的模式可以是實體模式、基於外表的模式甚至逐變模式。
到目前為止,我們只談到了筆畫路徑。但是,筆畫路徑一般只能產生不怎麼有趣的線條圖。實際上,簡單的線條筆畫只是 cairo 中的 5 種基本繪圖操作之一。這 5 種操作是:
(1)cairo_stroke
(2)cairo_fill
(3)cairo_show_text/cairo_show_glyphs
(4)cairo_paint
(5) cairo_mask
儘管簡單的線條繪圖很方便,但是它們的表達能力不夠強,不足以表示字體這樣的複雜圖形。cairo 為字體提供了一個基類 cairo_font_face_t。cairo 支持可縮放字體,其中包含給定字體大小的緩存標準。另外,可以用各種字體選項控制如何顯示給定的字體。在使用 cairo 時,在 UNIX 上常用的字體是 Freetype 字體,在 Windows 平台上使用 Win32 字體。
8.cairo 的發展過程
cairo 的版本號採用與 Linux 內核相似的規則 —— 也就是,奇數版本是實驗性的開發版本,不適合在生產環境中使用。偶數版本是穩定版本:最初的 1.0 版本主要關注順利地向用戶提供 API 和產生高質量輸出。1.2 API 完善了幾個開發不太完整的後端,當前的 1.4 系列主要關注優化和添加新功能。
cairo 的開發人員提供了一些出色的示例代碼片段,演示了 cairo API 的各種功能。所以不必等待 cairo 的下一個版本了,現在就下載並試用當前版本!

沒有留言:

張貼留言