ちょっと私はC++を使って描画領域を持つプログラムを書いています。私は描画領域からマウス信号を検出し、これらの位置に点を描画することが可能にする必要があります。これどうやってするの?このようなことを助けるフォーラムはあまり多くなく、ドキュメントは明確ではありません。誰か助けてくれますか?gtkにポイント/ラインを描く。 C++
0
A
答えて
4
gtk3アプリケーションでの描画は、「描画」信号に応答して行われます。コールバック関数を "draw"シグナルに接続し、gtk +がウィンドウを再描画する必要がある場合、コールバックが呼び出されます。
static gboolean
draw_cb (GtkWidget *widget,
cairo_t *cr,
gpointer data)
{
// do your drawing on the provided cairo_t
// ...
return FALSE;
}
さて、マウスクリックを処理するために、あなたは「ボタン押しイベント」に別のコールバック関数を接続する必要があります:
g_signal_connect (drawingarea, "button-press-event",
G_CALLBACK (button_press_event_cb), NULL);
g_signal_connect (drawingarea, "draw",
G_CALLBACK (draw_cb), NULL);
コールバックは次のようになります
小さな例についてはdrawing area reference docs、完全なアプリケーションについてはdrawing area demoを参照してください。
+0
ありがとうございました。これは便利でした。 :) –
1
gtkmmをC++で使用するのが最適です。ほとんどのイベントは、特定の仮想メソッドをオーバーロードすることによって取得できます。マウスを押すと、on_button_press_event
メソッドがオーバーロードされます。 gtkmm.orgのチュートリアルはそれほど悪くはありません(オープンソースのチュートリアルの場合)。基本について読んで、必要に応じて他の章を見ても良いでしょう。
関連する問題
- 1. GTK + 3カスタム描画エリア
- 2. GTK + 2とGTK + 3信号の "公開/描画/レンダリング"イベント
- 3. C++ツリーを描く
- 4. GTK描画時に点滅する
- 5. GTK#ボタンが正しく描かれていませんか?
- 6. (Py)GTKに繰り返しイメージからなる線を描くには?
- 7. .NET/C#でSVGを描く?
- 8. C++/Qt:キャレットを描く
- 9. C#で帽子を描く
- 10. C - GTK - g_application_quit
- 11. gtkのマルチプロセッシングc
- 12. PointFを中心に円を描くC#
- 13. 水平スクロールバーに線を描く - C#
- 14. Cで線形上に円を描く#
- 15. C#:画像にタイムスタンプを描く
- 16. gtk#デスクトップアプリケーション内でウェブページを開くには?
- 17. GTKの描画領域を更新するには
- 18. カイロ表面の上にGTKウィジェットを描画する方法
- 19. Cで楕円を描く方法は?
- 20. Trapezium shaped ROIを描くOpenCV C++
- 21. C#で長方形を描く
- 22. C#ビットマップを描くCMYKの値
- 23. Dev C++のGTK 3.0コンパイルエラー
- 24. C#GTK 2&3競合Emgucv
- 25. c gtk + -2 glade3:Gtk Builderからロードされたコンボボックスにテキストを追加する
- 26. CでGtk + 3コールバック関数で正しくキャストできない
- 27. キャンバスにSVGを描く
- 28. 別途GTK#をインストールしなくてもGTK#.NETアプリケーションをインストールする
- 29. GTK +
- 30. スタイラスで描くキャンバス - Windows 10 Universal Application C#
GTK 2またはGTK 3を使用していますか? GTK 2は 'expose-event'イベントを使用しますが、GTK 3は' draw'イベントを使用します。あなたのC++プログラムでGTKmm(GTK C++バインディング)、またはGTK C APIを使用していますか? – liberforce