我正在尝试在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
请帮助建议一些解决此问题的方法。感谢。
答案 0 :(得分:0)
这是怎么回事(虽然我没有用像你这样的应用程序对它进行测试,但它可能值得一试),这只是一个想法:
1)在您的GUI中,如果您添加addNewPositionCallback,如下所示:
SomeVariable = addNewPositionCallback(hPoint,@GetPointPosition);
其中hPoint是移动点的句柄,@ GetPointPosition是您调用的匿名函数,它获取当前的点位置:
PointPosition(someIndex) = getPosition(hPoint) % store positions in an array
然后您可以比较PointPosition的连续条目,如果两个连续的位置相同,那么该点已经停止移动,您可以调用您感兴趣的函数。
正如我上面所说,这只是一个想法;我在GUI中使用类似的代码来检测拖动的矩形(即直接而不是嵌入),它工作正常。