使用cairo在gtkentry上面绘图

时间:2010-05-23 11:05:15

标签: c gtk drawing 2d cairo

我想用cairo来增强gtkentry的外观。为此,我将回调连接到'expose-event'。在回调中,我调用了gtkentry的原始expose-event处理程序。在那之后,我创建了cairo上下文并绘制了一些线条并摧毁了cairo。我返回'TRUE'作为回调函数的返回值,因此expose-event不会传播。

现在我的问题是,我从(0,0)到(100,100)画线。但是线条仅出现在gtkentry的边界区域。文本所在的位置,不会出现。

请帮忙。

亲切的问候 -Durgesh O Mishra

1 个答案:

答案 0 :(得分:1)

GtkEntry对文字区域使用额外的GdkWindow。它是私有的,但您可以使用以下代码访问它:

GDK_WINDOW (gdk_window_peek_children (GTK_WIDGET (entry)->window)->data);

因此,您可以将此窗口传递给gdk_cairo_create()

如果您在将代码应用到代码时遇到问题,请粘贴代码 - 如果没有任何测试方法,很难猜测该怎么做。