【发布时间】:2021-06-30 13:44:57
【问题描述】:
我希望能够使用 Cairo 使用 Gtk3 直接绘制到根窗口。我在这样的全屏窗口上绘制了旧的 Gtk2 代码:
GdkWindow* drawable;
GdkGC* gc;
drawable = gdk_screen_get_root_window (gdk_screen_get_default());
gc = gdk_gc_new (drawable);
gdk_gc_set_subwindow (gc, GDK_INCLUDE_INFERIORS);
...
do_draw(drawable, gc);
我用 Gtk3 试过这个,
GdkWindow* drawable;
drawable = gdk_screen_get_root_window (gdk_screen_get_default());
cairo_surface_t *source_surface = gdk_window_create_similar_surface (drawable, CAIRO_CONTENT_COLOR_ALPHA, gdk_window_get_width(drawable), gdk_window_get_height(drawable) );
cairo_t *cairo = cairo_create(source_surface);
cairo_set_source_surface(cairo, source_surface, 0, 0);
....
do_draw(cairo);
代码似乎运行良好,但屏幕上没有任何内容。有没有办法用 Gtk3 和 Cairo 做类似的事情?
【问题讨论】: