cairo是一個輕量級的渲染2D引擎,可以根據具體的點陣座標輸出成不同格式的結果檔案,比如常見的圖片格式,或者pdf格式。cairo還支援多種程式設計語言的接入和多種第三方外掛程式的調用,是一個非常容易上手、容易使用的渲染引擎。
在cairo官方地址,有一個很簡單的上手介紹,給出一個簡單的繪製圖形講解,快速的瞭解如何繪製簡單的文字、線條和文本。在這裡就不再廢話,如果英文不好,csdn上也有中文翻譯。英文官方介紹請點擊。
這裡也貼出倆個比較適合初期上手的地址,繪製過程和代碼講解都是非常清晰的。
第一個是介紹使用cairo繪製各種圖形的代碼和代碼講解:
http://zetcode.com/gfx/cairo/shapesfills/
下面這個是介紹了cairo結合GTK一起繪製線的介紹,包括虛實線、line_join和linecap:
http://zetcode.com/gfx/cairo/basicdrawing/
這裡主要是介紹使用cairo繪製一個面圖形。根據上面連結中的一個例子進行介紹。項目需求是繪製一個面,面的邊線和面的填充需要使用不同的寬度和顏色。這裡幾個核心方法是 cairo_set_line_width cairo_stroke_preserve cairo_fill cairo_stroke
下面貼出代碼再進行具體的介紹
int draw(){ cairo_set_line_width(cr, 9); cairo_set_source_rgb(cr, 0.69, 0.19, 0); cairo_translate(cr, width/2, height/2); cairo_arc(cr, 0, 0, 50, 0, 2 * M_PI); cairo_stroke_preserve(cr); cairo_set_source_rgb(cr, 0.3, 0.4, 0.6); cairo_fill(cr);}
上述代碼會繪製一個填充和邊線不一樣顏色的圓。其中的關鍵就是cairo_stroke_preserve。該方法會對當前繪製的畫筆設定,包括寬度、色值進行繪製,而且當前的路徑資訊會保留在繪製的上下文中。因此接下來在執行cairo_fill的時候還是在當前路徑的上下文中。該方法和cairo_stroke不同的是,cairo_stroke繪製結束,當前繪製的路徑資訊就在繪製上下文中被清空。