我想用cairo来增强gtkentry的外观。为此,我将回调连接到'expose-event'。在回调中,我调用了gtkentry的原始expose-event处理程序。在那之后,我创建了cairo上下文并绘制了一些线条并摧毁了cairo。我返回'TRUE'作为回调函数的返回值,因此expose-event不会传播。
现在我的问题是,我从(0,0)到(100,100)画线。但是线条仅出现在gtkentry的边界区域。文本所在的位置,不会出现。
请帮忙。
亲切的问候 -Durgesh O Mishra
答案 0 :(得分:1)
GtkEntry
对文字区域使用额外的GdkWindow
。它是私有的,但您可以使用以下代码访问它:
GDK_WINDOW (gdk_window_peek_children (GTK_WIDGET (entry)->window)->data);
因此,您可以将此窗口传递给gdk_cairo_create()
。
如果您在将代码应用到代码时遇到问题,请粘贴代码 - 如果没有任何测试方法,很难猜测该怎么做。