DELETE功能正在删除徽标,但我不希望它删除徽标

时间:2017-04-04 16:33:42

标签: matlab user-interface matlab-figure graphical-logo

我在Matlab中有一个GUI,我有一个DELETE BUTTON,点击它之后,它也会删除它中的徽标。

DELETE函数的代码:

clc

figure('Name', 'Vektorkardiogram');
%Return handle to figure named 'Vectorcardiogram'.
h = findobj('Name', 'Vektorkardiogram');
close(h);


figure('Name', 'Roviny');
%Return handle to figure named 'Vectorcardiogram'.
r = findobj('Name', 'Roviny');
close(r);


figure('Name', 'P vlna');
%Return handle to figure named 'Vectorcardiogram'.
p = findobj('Name', 'P vlna');
close(p);


figure('Name', 'QRS komplex');
%Return handle to figure named 'Vectorcardiogram'.
q = findobj('Name', 'QRS komplex');
close(q);


figure('Name', 'T vlna');
%Return handle to figure named 'Vectorcardiogram'.
t = findobj('Name', 'T vlna');
close(t);

arrayfun(@cla,findall(0,'type','axes'));
delete(findall(findall(gcf,'Type','axe'),'Type','text'));

上传徽标的代码(我使用guide命令在Matlab中创建了一个GUI,因此下面的代码插入了GUI代码中):

logo4 = imread('logo4.png','BackgroundColor',[1 1 1]);
imshow(logo4)

推动DELETE BUTTON,我只想关闭某些人物风,而不是删除徽标。你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

您正在使用axes清除所有cla,其中包含您不想删除的徽标。

arrayfun(@cla,findall(0,'type','axes'));

不是清除所有内容,最好删除和清除特定的对象。

cla(handles.axes10)
cla(handles.axes11)

或者,如果保留image对象的句柄,则可以在清除轴时忽略包含它的轴

himg = imshow(data);

allaxes = findall(0, 'type', 'axes');
allaxes = allaxes(~ismember(allaxes, ancestor(himg, 'axes')));

cla(allaxes)

此外,您不应该在GUI中执行findall(0, ...,因为如果我在打开GUI之前打开一个数字,您将改变我的其他数字的状态。相反,使用findall(gcbf, ...只会改变您自己GUI的子项。要么是这样,要么使用特定于您的GUI的'Tag',然后使用findall来过滤该特定标记。

figure('Tag', 'mygui')

findall(0, 'Tag', 'mygui')

<强>更新

您应该使用findall结合'Name'参数来确定您的哪些数字实际存在

figs = findall(0, 'Name', 'Vektorkardiogram', ...
               '-or', 'Name', 'Roviny', ...
               '-or', 'Name', 'P vlna', ...
               '-or', 'Name', 'QRS komplex', ...
               '-or', 'Name', 'T vlna');
delete(figs);

要清除axes,您可以确保它们存在

ax = findall(0, 'tag', 'axes10', '-or', 'tag', 'axes11', '-or', 'tag', 'axes12');     
cla(ax)