我想使用cairo来增强gtkentry的外观。为此,我将一个回调连接到'expose-event‘。在回调中,我调用gtkentry的原始expose-event处理程序。在此之后,我创建了cairo上下文,并绘制了一些线,并销毁了cairo。我返回'TRUE‘作为回调函数的返回值,这样expose-event就不会传播了。
现在我的问题是,我从(0,0)到(100,100)画了一条线。但是线只出现在gtkentry的边界区域。文本所在的位置,它不会出现。
请帮帮忙。
Kind关于-Durgesh O Mishra
发布于 2010-05-23 19:18:58
GtkEntry对文本区域使用额外的GdkWindow。它是私有的,但您可以使用以下代码访问它:
GDK_WINDOW (gdk_window_peek_children (GTK_WIDGET (entry)->window)->data);因此,您可以将此窗口传递给gdk_cairo_create()。
如果您在将此代码应用于您的代码时遇到问题,请粘贴代码-如果没有任何测试方法,则很难猜测要做什么。
https://stackoverflow.com/questions/2891444
复制相似问题