嘿,我正在使用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. 如何在opencv C++中的兩點之間繪製一條線
- 6. 動畫從一個點繪製一條線到一個點
- 7. OpenGL在另一個線程中繪製
- 8. 繪製一個點
- 9. 繪製點在OpenLayers線後
- 10. 如何在Gtk :: DrawingArea區域繪製一條新線條,同時存在之前已繪製的線條?
- 11. Gtk繪製位圖
- 12. 折線圖在Chart.js中的第一個點之前繪製
- 13. 在c#圖上繪製一條線
- 14. 繪製點劃線(....)線索路徑,而不是一個線路(________)
- 15. 在MatLab中繪製一個3d點
- 16. 在C中的圖像中繪製一個點#
- 17. 使CPTScatterPlot動畫一次繪製一個點。附加線原點
- 18. 在兩個3D點之間繪製一條弧線
- 19. 在R中繪製一個線框和一個帶有點陣的雲
- 20. 10個線程繪製在一個JPanel
- 21. C++ CLI繪製線
- 22. python散點圖繪製線
- 23. 如何在iOS中繪製單點線
- 24. 在flex中的線圖上繪製點
- 25. 如何在Gtk#窗口上繪製某些東西(線,圓等)?
- 26. 在C中的圖片框上繪製一個點的網格#
- 27. Android:讓用戶從一個點繪製一條線到另一個點
- 28. 如何在開放層中的繪製線串上繪製點
- 29. gtk/c在一個線程中操縱GUI:奇怪的錯誤
- 30. 在C++中繪製一個圓,但是繪製菱形代替
您使用的是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