gpt4 book ai didi

c - 如何在 GTK3 中处理鼠标移动事件?

转载 作者:太空宇宙 更新时间:2023-11-04 03:22:56 24 4
gpt4 key购买 nike

我正在尝试使用 C/GTK3/Cairo 实现以下功能:

-左键单击 GtkDrawingArea 小部件并打印坐标 Xo 和 Yo。

-在按住左键的同时,移动鼠标并绘制一条连接 (Xo,Yo) 到当前鼠标位置的线。

-释放鼠标左键并printf("something")

我该怎么做?任何人都知道展示如何处理鼠标 clicl-move 事件的好教程吗?

到目前为止,我找到的最好的是这个 zetcode lines (它展示了如何处理鼠标点击事件,但不处理按钮按下/移动/按钮弹起和 this ,它解释了如何在将鼠标悬停在小部件上时更改鼠标光标。

谢谢

最佳答案

你看到了吗this GtkDrawingArea demo来自 Gtk 人?这个是用 C 写的,但是 there is a Python version同一程序(链接已更新 - 感谢 @kyuuhachi)。

无论如何,在构造函数(__init__)中,调用连接到motion_notify_event

您还需要连接到 button_press_eventbutton_release_event

然后,按下按钮,您将保存起点的坐标。 (也保存到终点,目前相同)。

在每个 motion_notify_event 上,您删除前一行(通过覆盖),并将其重新绘制到新的终点。

最后,当按钮被释放时,该行就结束了。

如果您使用 Canvas 小部件,会容易得多,例如 GooCanvas,它负责大部分更新。您可以只更新线对象的坐标,它会自行移动。您也可以轻松删除线条。 “算法”与上述类似:

  • button_press_eventbutton_release_eventmotion_notifyevent 连接到 Canvas ,
  • 当按下按钮时,创建一个 GooCanvas.polyline 对象,并设置起点和终点,
  • 在每个 motion_notify_event 上更新端点
  • button_release_event 结束。

关于c - 如何在 GTK3 中处理鼠标移动事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43763685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com