首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何替代GDK_INCLUDE_INFERIORS?

如何替代GDK_INCLUDE_INFERIORS?
EN

Stack Overflow用户
提问于 2011-04-19 23:19:38
回答 1查看 229关注 0票数 0

由于大多数gdk_gc_*方法在GTK+ 3中都已弃用,那么如何仅使用Cairo在子窗口上进行绘制呢?下面是我想要实现的一个简单示例:

代码语言:javascript
复制
GdkWindow *tl_window = parent_widget->window;
GdkGC *gc = gdk_gc_new(tl_window1->window);
gdk_gc_set_subwindow(gc, GDK_INCLUDE_INFERIORS);
gdk_gc_set_exposures(gc, FALSE);
do_my_painting(tl_window, gc);
gdk_gc_unref(gc);

http://developer.gnome.org/gdk/stable/gdk-Graphics-Contexts.html#gdk-gc-set-subwindow说,GDK_INCLUDE_INFERIORS将在源代码上使用。所以我假设诀窍是创建一个窗口的源代码,然后...好吧那..。我被卡住了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-07 16:11:51

我自己找到了解决方案

代码语言:javascript
复制
GtkWidget *tl_window = gtk_widget_get_toplevel(widget);
cairo_t *cairo = gdk_cairo_create(gtk_widget_get_window(tl_window));
cairo_surface_t *source_surface = cairo_get_target(cairo);
cairo_t *cairo_new = cairo_create(source_surface);
cairo_set_source_surface(cairo, cairo_get_target(cairo_new), 0, 0);

do_my_painting(cairo_new);
cairo_paint(cairo);
cairo_destroy(cairo);

(我是不是错过了cairo_new的销毁?)

我还发现了下一个链接(没有测试) http://mail.gnome.org/archives/commits-list/2010-August/msg03385.html,在那里他们似乎使用了像素图而不是表面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5718719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档