将 cairo 与 gtk3 一起使用
Posted
技术标签:
【中文标题】将 cairo 与 gtk3 一起使用【英文标题】:using cairo with gtk3 【发布时间】:2012-01-04 04:41:40 【问题描述】:我正在尝试在 gtk3 中使用 cairo 绘制散点图。首先,我在这里使用示例:http://zetcode.com/tutorials/cairographicstutorial/
他们用 gtk2 编译成功,但没有显示图像。它们不使用 gtk3 编译,但会出现以下错误:
example.c: In function ‘on_expose_event’:
example.c:17:31: error: ‘GtkWidget’ has no member named ‘window’
对此的任何帮助将不胜感激。
顺便说一句,如果有帮助的话,我正在使用 ArchLinux 进行写作。
【问题讨论】:
【参考方案1】:Gtk3 有很多变化。不再有成员 window
作为 GtkWidget
的一部分公开,成员已移至 GtkWidgetPrivate
,这是一个不透明的结构,因此您无法直接从 GtkWidget
访问成员。您将不得不使用访问器函数,在这种情况下,您需要GtkWidget
的成员window
,您可以使用gtk_widget_get_window
,但这可能无法修复您正在使用的代码示例。请注意,expose_event
信号已替换为draw
信号,因此您需要更新实际正确绘制的函数(我认为在您的情况下为on_expose_event
)。请参考this link 以查看切换到 Gtk3 所需的更改列表。您可以参考gtk-demo
应用程序或demos/gtk-demo
提供的源代码从 Gtk3 源代码中获取示例代码。
关于在 Gtk2 的情况下不显示图像,如果您正在使用图像样本,请确保图像文件在源中提到的路径中可用。
希望这会有所帮助!
【讨论】:
以上是关于将 cairo 与 gtk3 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Cairo 和 Gtk3 在 GtkDrawingArea 中绘制一条线