используя cairo с gtk3

Я пытаюсь нарисовать диаграмму рассеяния с каиром в gtk3. Для начала я использую примеры здесь: 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, если это помогает.


person andreasw    schedule 04.01.2012    source источник


Ответы (1)


В Gtk3 было довольно много изменений. Член window больше не выставляется как часть GtkWidget, члены были перемещены в GtkWidgetPrivate, которая является непрозрачной структурой, поэтому вы не можете получить доступ к членам напрямую из GtkWidget. Вам нужно будет использовать функцию доступа, в этом случае, когда вам нужен window член GtkWidget, вы можете использовать gtk_widget_get_window, но это может не исправить пример кода, с которым вы работаете. Обратите внимание, что сигнал expose_event был заменен сигналом draw, поэтому вам нужно будет соответствующим образом обновить функцию, которая на самом деле рисует (я думаю, в вашем случае on_expose_event). Перейдите по этой ссылке, чтобы просмотреть список изменений, необходимых для перехода на Gtk3. Вы можете обратиться к источнику, предоставленному gtk-demo приложением, или demos/gtk-demo из исходного кода Gtk3, чтобы получить образец кода.
Что касается изображения, которое не отображается в случае Gtk2, если вы работаете с образцом изображения, убедитесь, что файл изображения доступен в путь, указанный в источнике.
Надеюсь, это поможет!

person another.anon.coward    schedule 04.01.2012