将 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 中绘制一条线

使用 Cairo 的 Ruby Gtk3 内存泄漏

Gtk3 和 cairo g_timeout_add 不起作用

Gtk3和开罗动画抽搐

让 Cairo 图形与 MFC 一起工作的小例子?

如何在 Gtk 下创建 cairo-gl 曲面