MATLAB:当拖动停止时是否存在一个回调函数?

时间:2014-08-13 18:18:51

标签: matlab mouse

我正在尝试在MATLAB GUI中创建一个带有可拖动点的图(使用impoly)。

当点移动时,最常用的 addNewPositionCallback 函数被执行。

一旦我停止拖动点,我想触发另一个函数,因为这是一个强烈的计算,我不想在点移动时执行。

我尝试过使用 WindowButtonUpFcn 之类的方法,但问题是,impoint有一个stopDrag()函数,当拖动停止时清除 WindowButtonUpFcn ...

function stopDrag(varargin)
    dragMotion();

    iptremovecallback(h_fig, 'WindowButtonMotionFcn', ...
        drag_motion_callback_id);
    iptremovecallback(h_fig, 'WindowButtonUpFcn', ...
        drag_up_callback_id);

    % enable the figures pointer manager.
    iptPointerManager(h_fig, 'enable');
end % stopDrag

请帮助建议一些解决此问题的方法。感谢。

1 个答案:

答案 0 :(得分:0)

这是怎么回事(虽然我没有用像你这样的应用程序对它进行测试,但它可能值得一试),这只是一个想法:

1)在您的GUI中,如果您添加addNewPositionCallback,如下所示:

SomeVariable = addNewPositionCallback(hPoint,@GetPointPosition);

其中hPoint是移动点的句柄,@ GetPointPosition是您调用的匿名函数,它获取当前的点位置:

PointPosition(someIndex) = getPosition(hPoint) % store positions in an array

然后您可以比较PointPosition的连续条目,如果两个连续的位置相同,那么该点已经停止移动,您可以调用您感兴趣的函数。

正如我上面所说,这只是一个想法;我在GUI中使用类似的代码来检测拖动的矩形(即直接而不是嵌入),它工作正常。