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 に答える