嘿,我正在使用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