我正在使用 while 循环,并在其中在 MATLAB 中添加 ginput 来捕获鼠标的位置。我每次都会检查返回的位置是否在某个区域内,因此我将在当前图形上绘制一些曲线。但问题是,通过使用 ginput,我必须在返回位置之前按 Enter 键。有什么方法可以捕获鼠标事件,以便当当前光标悬停在某些点上时会触发回调函数吗?谢谢。
最佳答案
由于您已经有一个正在使用的图窗,因此您可以设置该图窗的监听属性:
set(gcf,'WindowButtonMotionFcn', @mouseMoveListener);
但是现在您必须创建一个名为“mouseMoveListener”的函数(如果您想将其命名为其他名称,请将@符号后面的单词更改为您想要的任何名称,并确保实际的事件函数也被命名为该名称) .
在您的函数mouseMoveListener
中,您现在可以获得鼠标坐标:
MousePos = get(mainAxis,'CurrentPoint');
它告诉鼠标相对于轴坐标的当前点。从那里,您可以使用任何 if 语句检查该位置是否位于您想要的位置,并根据该信息执行您想要的任何任务。
关于events - 有什么方法可以在将鼠标悬停在Matlab中的某个点上时触发回调函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11814308/