【发布时间】:2012-08-08 13:24:02
【问题描述】:
我有一个包含 4 个绘图的 matlab gui。如果在列表中选择了不同的文件,则应更新第一个图。其他 3 个应仅在请求时可见(并被计算)。
但是,在绘制一次后,我未能使图 2-4 不可见。
我试过了
set(handles.axesImage, 'Visible', 'off');
但这只会删除轴,而不是整个图。
编辑:
除了使事物不可见之外,是否也可以实际删除内容?通常我会打电话给close(hfig);,但这里我没有数字。
我试过了
handles2hide = [axisObj;cell2mat(get(axisObj,'Children'))];
delete(handles2hide);
但是对于未绘制的轴(启动后)失败
编辑: 我将代码更改为:
axisObj = handles.axesContour;
if ishandle(axisObj)
handles2delete = get(axisObj,'Children');
delete(handles2delete);
set(axisObj,'visible','off')
end
if (isfield(handles,'contour') && isfield(handles.contour,'hColorbar'))
delete(handles.contour.hColorbar);
delete(handles.contour.hColorbarLabel);
end
但是,颜色栏仍未删除,handles.contour.hColorbar 失败并显示Invalid handle object.
【问题讨论】:
-
删除对我有用。也许您想检查您是否只删除有效句柄,即
delete(handles2hide(ishandle(handles2hide))) -
在此之前我收到一个错误:
??? Cell contents reference from a non-cell array object.in linehandles2hide = [cell2mat(get(axisObj,'Children'))];。我不得不从删除列表中删除axisObj,因为我无法再绘制到已删除的轴... -
我删除了
cell2mat,现在情节被删除了,但是颜色条和颜色标签仍然存在。即使我保存它们的句柄以删除它们,这也不起作用,因为删除失败是因为它们未被识别为句柄。