我在MATLAB R2009b中编写了一个GUI函数,该函数使用了IMRECT函数。我需要确保此GUI也适用于MATLAB R2007b:自此版本以来,IMRECT功能已经发生了广泛的变化。我有两个问题:
1 - 在新的(R2009b)IMRECT中,定义了一种方法GETCOLOR,它允许获得用户使用滚动菜单选择的颜色。有没有办法模仿旧的(R2007b)函数的这种行为?
2 - 在MATLAB R2009b中,我可以在使用IMRECT后使用WAIT,如下所示:
h = imrect(axhandle);
wait(h);
这允许等待用户正确放置他/她的矩形并双击以确认选择。是否有类似的东西可以与R2007b的IMRECT一起使用?
答案 0 :(得分:1)
不幸的是,您需要两种功能的解决方法。
这是一种方法:
%# Create a figure and some points
fh = figure;plot(rand(10,1),rand(10,1),'.')
ah = gca;
%# this allows the user to place the rectangle. However, the code resumes
%# as soon as the rectangle has been drawn
rh = imrect(ah,[]);
%# Create a dialog to have the possibility to uiwait
wh = warndlg('Please close this dialog once you are done adjusting your rectangle');
uiwait(wh)
%# Get the color of the rectangle
rectKids = get(rh,'Children');
rectangleColor = get(rectKids(1),'Color');
您可以使用verLessThan检查Matlab版本以获得正确的功能。但是,如果有用户在2007b和2009b上同时使用该代码,我建议您为每个人留下对话框,这样他们切换时就不会感到困惑。