在gtk中绘制点/线.C++
Drawing a point/line in gtk. C++
嘿,我正在用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;
}
现在,为了处理鼠标点击,您需要将另一个回调函数连接到"按钮按下事件":
g_signal_connect (drawingarea, "button-press-event",
G_CALLBACK (button_press_event_cb), NULL);
请参阅绘图区域参考文档中的一个小示例,以及绘图区域演示中的完整应用程序。
将gtkmm与C++结合使用,这是最好的选择。大多数事件都可以通过重载特定的虚拟方法来捕获。对于鼠标按压,可以重载on_button_press_event
方法。gtkmm.org上的教程还不错(对于开源教程来说),您可以通过阅读基础知识并根据需要查看其他感兴趣的章节来获得良好的开端。
相关文章:
- QuadTree只在窗口的右上角绘制
- 绘制旋转的三角形
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 如何在QT中的自定义视频小工具t上绘制矩形
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 绘制顺时针三角形,重新排序点
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- SFML 文本未绘制在窗口上
- 如何在快板的屏幕中显示子位图的绘制?
- 如何绘制自定义形状的元素?
- QPainter 将 QBrush 设置为 在 QT/C++ 中绘制文本
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- 绘制文本问题
- 在 QT C++中绘制/操作多边形
- 如何在 Gnuplot 中分别绘制 2 个文件数据?我有一个文件"sin.txt",另一个文件"cos.txt",我想将它们分别绘制在一个图表上
- 在现代OpenGL中,绘制GL_TRIANGLE奇怪的z轴行为的填充圆
- OpenGL 着色器不绘制任何东西 - 糟糕的精灵类
- 要在屏幕上绘制一些小瓷砖,我应该使用 QQuickItem 还是 QQuickPaintedItem?