嘿,我正在使用 C++ 编写一个具有绘图区域的程序。我需要能够从绘图区域检测鼠标信号并在这些位置绘制点。我怎样才能做到这一点?没有多少论坛可以帮助解决这些问题,而且文档也不清楚。有人可以帮帮我吗?
最佳答案
gtk3 应用程序中的绘图是响应“draw”信号而完成的。您将回调函数连接到“draw”信号,当 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;
}
现在,要处理鼠标点击,您需要将另一个回调函数连接到“button-press-event”:
g_signal_connect (drawingarea, "button-press-event",
G_CALLBACK (button_press_event_cb), NULL);
参见 drawing area reference docs举个小例子和 drawing area demo一个完整的应用程序。
关于c++ - 在 gtk 中绘制点/线。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9285926/