【问题标题】:using cairo with gtk3将 cairo 与 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 进行写作。

【问题讨论】:

    标签: c gtk cairo gtk3


    【解决方案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 的情况下不显示图像,如果您正在使用图像样本,请确保图像文件在源中提到的路径中可用。
    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 2014-09-24
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      相关资源
      最近更新 更多