作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于大多数 gdk_gc_*
方法在 GTK+ 3 中已被弃用,如何仅使用 Cairo 在子窗口上进行绘制?下面是我想要实现的一个简单示例:
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
将用于源。所以我认为诀窍是创建窗口的源,然后......好吧......我被困住了。
最佳答案
我自己找到了解决方案
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他们似乎使用像素图而不是表面。
关于c - 如何替换GDK_INCLUDE_INFERIORS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5718719/
我是一名优秀的程序员,十分优秀!