我正在编写一个Matlab GUI,用于在用户更改光标位置时访问轴上的当前光标点。但是,我发现了一个奇怪的现象,即随着GUI对象数量的增加, windowButtonMotionFcn 的速度变慢。以下是结果
http://i.stack.imgur.com/fwjCK.jpg
我将所有GUI对象的属性设置为默认值,我的操作Matlab版本是Matlab 2012a。当GUI对象的数量增加时,有没有办法保持windowButtonMotionFcn的速度?
感谢您的关注和帮助。 迈里克
答案 0 :(得分:0)
我不确切知道如何在matlab中实现事件handlig。但是,更多gui对象减慢进程似乎是合理的。可以把它想象成,更多的gui对象需要更多的内存,更多的对象需要处理,更多的代码,更长的列表来搜索...我也经历过使用GUIDE创建的GUI通常比手工制作的GUI慢。无论如何都没有进行测试,因此未经确认。但是,当我在GUI中不需要太多对象时,我通常更喜欢手动创建它们。 GUIDE guis通常更为通用,但在大多数情况下,无论如何只使用了一部分设施。
答案 1 :(得分:0)
尝试使用该图的基础Java框架的 MouseMovedCallback :
jFrame = get(handle(hFig), 'JavaFrame');
try
% This works up to R2011a
jClient = jFrame.fFigureClient;
catch
try
% This works from R2008b and up, up to HG2
jClient = jFrame.fHG1Client;
catch
% This works in HG2
jClient = jFrame.fHG2Client;
end
end
jWindow = handle(jClient.getWindow, 'CallbackProperties');
set(jWindow, 'MouseMovedCallback', @matlabCallbackFunction);
答案 2 :(得分:0)
“速度减慢”和“内存泄漏”也有类似的问题。
在重绘可见对象之前使用delete(gca)
避免了问题。