此刻,我有一个如下所示的窗口:
每个绿色圆盘代表一个数字。我怎样才能做到当您将鼠标移到磁盘上时,会出现工具提示或其他内容并显示数字?
当然,这只是一个简单的说明。我们的目标是了解如何在不为每种情况编写大量新代码的情况下实现这一点。
目前,我正在 Canvas 上绘制一个大的“pict”图像,这似乎是错误的方法。以其他方式重写它并没有什么大不了的。我只需要知道正确的方法是什么:哪个工具,哪个库,您打算如何将这些东西放在一起来实现鼠标悬停。
我一直在搜索 Racket 文档,但到目前为止还没有找到这个问题的任何明确答案。
最佳答案
您需要使用新的 on-event
扩展 canvas%
类方法。 on-event
方法接受 mouse-event%
对象,其中包含鼠标相对于目标窗口的 x
和 y
坐标。
从那里,您可以将其与您使用的任何数据结构进行比较,以计算在 Canvas 上绘制圆圈的位置。
所以像这样的东西应该有效:
(define clicky-canvas%
(class canvas%
(define/override (on-event e)
(define window-x (send e get-x))
(define window-y (send e get-y))
(when (eq? (send e get-event-type) 'left-down)
.... your code here ....)))
现在您可以将 clicky-canvas%
对象插入到之前插入 canvas%
对象的窗口中。
关于canvas - 如何让 canvas% 对象响应鼠标悬停?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52764269/