我在C中使用gtk + -2.0,我必須在我的托盤圖標上寫上一個數字。我做這樣的方式:GtkStatusIcon繪圖問題
static GdkPixbuf * transform_pixbuf(GdkPixbuf *pixbuf) {
cairo_t *cr;
int width = gdk_pixbuf_get_width(pixbuf);
int height = gdk_pixbuf_get_height(pixbuf);
GdkPixmap *pixmap = gdk_pixmap_new(NULL, width, height, 24);
cr = gdk_cairo_create(pixmap);
gdk_cairo_set_source_pixbuf(cr, pixbuf, 0, 0);
cairo_paint(cr);
cairo_select_font_face (cr, "serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
cairo_set_font_size (cr, 15.0);
cairo_set_source_rgb (cr, 1.0, 0, 0);
cairo_move_to (cr, 10, 20);
cairo_show_text (cr, "8");
cairo_destroy(cr);
GdkPixbuf *pixbuf_new = gdk_pixbuf_get_from_drawable(NULL, pixmap, NULL,
0, 0, 0, 0, width, height);
return pixbuf_new;
}
其中GdkPixbuf *pixbuf
是GdkPixbuf我想在托盤設置。我可以畫一個數字,但圖標的背景變成了「跳舞」 - 。
我猜問題是在gdk_pixmap_new
的depth
的說法,因爲圖標有32位格式,但32
是無效的這個函數的參數。在這種情況下,我有跟隨着警告,並在托盤沒有圖標:
GDK-WARNING **:使用開羅渲染要求繪製參數 已指定顏色表。所有窗口都有一個色圖, 但是,如果pixlps的 是使用非NULL窗口參數創建的,則其默認情況下只會使用色彩圖。否則 一個顏色表,必須對它們進行設置與gdk_drawable_set_colormap
GDK-WARNING **:/build/buildd/gtk+2.0-2.24.4/gdk/gdkpixbuf-drawable.c:1249:源繪製有沒有顏色表;無論是傳遞一個顏色表,或者用gdk_drawable_set_colormap()
給我建議,請將顏色表上繪製...