当拖动停止时,是否有一个import的回调函数?



我试图在MATLAB GUI中创建一个具有可拖动点的绘图(使用imppoly)。

最常用的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)在你的GUI中,如果你像这样添加addNewPositionCallback:

SomeVariable = addNewPositionCallback(hPoint,@GetPointPosition);

其中hPoint是移动点的句柄,@GetPointPosition是一个匿名函数,你可以调用它来获取当前点的位置:

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

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

正如我上面所说的,这只是一个想法;我使用了类似的代码来检测GUI中拖动的矩形(即直接而不是导入),效果很好。

相关内容

  • 没有找到相关文章

最新更新