嘿,我正在使用c + +編寫一個具有繪圖區域的程序。我需要從繪圖區域檢測鼠標信號並在這些位置繪製點。我怎樣才能做到這一點?沒有太多的論壇可以幫助解決這個問題,文檔也不清楚。有人能幫幫我嗎?在gtk中繪製一個點/線。 C++
0
A
回答
4
在gtk3應用程序中繪製是爲了響應「繪製」信號而完成的。您將回調函數連接到「繪製」信號,並且當gtk +需要重繪窗口時,將調用回調函數。
g_signal_connect (drawingarea, "draw",
G_CALLBACK (draw_cb), NULL);
回調看起來是這樣的:
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);
查看drawing area reference docs的一個小例子,drawing area demo查看完整的應用程序。
+0
嘿謝謝。這很有用。 :) – 2012-02-15 17:59:07
1
使用gtkmm與C++,這是最好的選擇。大多數事件可以通過重載特定的虛擬方法來捕獲。對於鼠標按下,您會超載on_button_press_event
方法。 gtkmm.org的教程並不算太壞(對於開源教程來說),您可以通過閱讀基礎知識並根據需要查看其他感興趣的章節開頭。
相關問題
- 1. 繪製線C++的中點算法
- 2. 不能用c#繪製一條線和一個點Tao.OpengGL
- 3. 如何繪製一個離線的點
- 4. 實時繪製線到下一個點
- 5. 動畫從一個點繪製一條線到一個點
- 6. 繪製一個點
- 7. 繪製點在OpenLayers線後
- 8. 折線圖在Chart.js中的第一個點之前繪製
- 9. Gtk繪製位圖
- 10. 在c#圖上繪製一條線
- 11. 繪製點劃線(....)線索路徑,而不是一個線路(________)
- 12. 在C中的圖像中繪製一個點#
- 13. 在兩個3D點之間繪製一條弧線
- 14. 在R中繪製一個線框和一個帶有點陣的雲
- 15. C++ CLI繪製線
- 16. 在flex中的線圖上繪製點
- 17. 如何在Gtk#窗口上繪製某些東西(線,圓等)?
- 18. 如何在python中繪製一條線,每個數據點有一個間隔
- 19. gtk/c在一個線程中操縱GUI:奇怪的錯誤
- 20. 如何在OpenCV3中繪製一系列點作爲一條線?
- 21. 在同一個窗口中清晰地繪製三條線,並使點線?
- 22. 在C#中繪製特定對角線
- 23. 繪製在C#中平行線
- 24. 從幾個點繪製曲線
- 25. Vb.net繪製線兩點
- 26. 用OpenGL ES繪製點線
- 27. 繪製一條線一個特定的點,matplotlib
- 28. 爲什麼R不會在一個水平箱線上繪製一個點,而是在一個垂直箱線上繪製?
- 29. 繪製任何矩形到一個GTK + DrawingArea填充整個DrawingArea
- 30. 在一個上下文中繪製實線和虛線
您使用的是GTK 2還是GTK 3? GTK 2使用'expose-event'事件,而GTK 3使用'draw'事件。你在C++程序中使用GTKmm(GTK C++綁定)還是GTK C API? – liberforce 2012-02-15 14:43:11