2012-10-31 33 views
4

我是cairo的新手,我已閱讀其網站上的教程/文檔。 現在我可以製作線條,矩形,基本上我可以渲染圖像而不是文本。無法在cairo中呈現文字

我使用下面的代碼

cairo_select_font_face (cr, "monospace", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAl); 

    cairo_set_font_size (cr, 14); 

    cairo_set_source_rgb (cr, 1, 1, 1); 

    cairo_move_to (cr, 50, 50); 

    cairo_show_text (cr, "Print Something"); 

任何人都可以請指出我的錯誤?

+0

下面的回答沒有 - 但似乎你用白色繪製,這是預期的(這竟然是解決我類似的問題,我有專門設置source_rgb)? – gauteh

回答

2

相同的答案開羅郵件列表(它似乎已經失去了某處)上:

你沒有做錯什麼(當然,可能使用玩具文本API,但應該仍然工作)你的代碼對我來說工作得很好。下面是我測試的全碼:

#include <cairo.h> 
int main() 
{ 
     cairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 200, 200); 
     cairo_t *cr = cairo_create(surface); 
     cairo_surface_destroy(surface); 

     /* Fill everything with white */ 
     cairo_set_source_rgb(cr, 1, 1, 1); 
     cairo_paint(cr); 

     /* Draw some text */ 
     cairo_select_font_face (cr, "monospace", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); 
     cairo_set_font_size (cr, 14); 
     cairo_set_source_rgb (cr, 0, 0, 0); 
     cairo_move_to (cr, 0, 50); 
     cairo_show_text (cr, "Print Something"); 

     cairo_surface_write_to_png(cairo_get_target(cr), "out.png"); 
     cairo_destroy(cr); 
     return 0; 
} 
+0

嗨,謝謝。我不知道我的結局出了什麼問題。我嘗試了與你所寫的相同的代碼,但我什麼都看不到。希望我能儘快整理。然後,我會在這裏發佈什麼是錯的。 –

+0

上面的完整示例不適用於您?你使用哪個cairo版本?你可以添加printf(「%d \ n」,(int)cairo_status(cr));在調用cairo_destroy()之前?如果一切正常,我認爲應該打印0。 –

+0

我打印了它並得到了35個(即「cairo status device error」)。但是,如果我試圖繪製一個矩形我看到它,那麼爲什麼文本錯誤? –