首页 > 解决方案 > 获取鼠标移动中每个点的坐标

问题描述

我需要所有鼠标移动坐标:当鼠标移动时,我需要一个连续的 (x,y) 值序列。我当前的代码留下了空白:

def paint(self, event):
    self.line_width = self.choose_size_button.get()
    paint_color = 'white' if self.eraser_on else self.color

    coord = (event.x, event.y)
    if self.old_x == None or self.old_y == None:

    else:

        print(coord)
        paint_color = self.color
        self.c.create_line(self.old_x, self.old_y, event.x, event.y,
                                width=self.line_width, fill=paint_color,
                                capstyle=ROUND, smooth=TRUE, splinesteps=36)

coord不完整:它“跳跃”了一些点,可能是因为鼠标移动得太快而丢失了一些点。我怎样才能记录所有在途的点?

标签: pythoneventstkinter

解决方案


您无法记录比设备采样率更细的输入。如果您已经为鼠标移动的细粒度事件进行了设置,那么这是您在这方面可以做的最好的事情。

但是,如果出于某种原因需要连续点,则可以对缺失的点进行插值以形成连接路径。简单的方法是用Bresenham 的线算法连接这些点。我建议你使用一些东西来平滑曲线;有几个包可以将漂亮的曲线拟合到一系列点;寻找术语“样条曲线”。


推荐阅读