0

我有一个使用的功能:

  g_signal_connect (area, "expose-event", G_CALLBACK (cb_expose), data);
  gtk_widget_show_all (main_window);
  gtk_main();

我在哪里传递带有数据的参数。cb_expose 函数使用数据在画布上绘制图形。

在这个函数之后,我想改变变量数据并用更新的数据重新绘制画布。我该怎么做?

考虑在函数中有一些参数会引发重绘标志。但不知道如何解决这个问题。

感谢所有帮助!

4

1 回答 1

1

我怀疑您需要添加这样的一行:

gdk_window_invalidate_rect(widget->main_window, &widget->allocation, FALSE);

在您的 cb_expose() 函数返回之前。此函数强制立即重绘矩形,而不是稍后。如果你使用双缓冲,你也必须交换缓冲区。

https://developer.gnome.org/gdk/stable/gdk-Windows.html#gdk-window-invalidate-rect

于 2013-05-23T18:34:50.047 回答