主要内容

close

R2026b

关闭一个或多个图窗

描述

close 关闭当前图窗。调用 close 等效于调用 close(gcf)。

示例

close(fig) 关闭 fig 指定的图窗。

示例

close force 关闭当前图窗,即使该图窗具有 CloseRequestFcn 回调函数以防止用户关闭图窗窗口。

close all 关闭其句柄可见的所有图窗。如果 HandleVisibility 属性设置为 'callback' 或 'off',则隐藏图窗句柄。

示例

close all hidden 关闭所有图窗,包括具有隐藏句柄的图窗。

示例

close all force 关闭所有图窗,包括已指定 CloseRequestFcn 回调以防止用户关闭图窗窗口的图窗。

示例

status = close(___) 返回上述任一语法的关闭操作的 status。如果一个或多个图窗关闭,函数将返回 1,否则返回 0。如果指定了 status 输出,则必须将字符向量形式的输入参量用圆括号括起来;例如,status = close('all','hidden')。

示例

示例

全部折叠

创建两个图窗,每个图窗包含一个线图。

f1 = figure;
plot(1:10)

Figure contains an axes object. The axes object contains an object of type line.

f2 = figure;
plot((1:10).^2)

Figure contains an axes object. The axes object contains an object of type line.

关闭第一个图窗并显示 f1 的值。

close(f1)
f1
f1 = 
  handle to deleted Figure

关闭当前图窗。

close

创建三个图窗,然后创建一个线图。默认情况下,plot 函数以当前图窗 (f3) 为目标。

f1 = figure;
f2 = figure;
f3 = figure;
plot(1:10)

Figure contains an axes object. The axes object contains an object of type line.

同时关闭图窗 f1 和 f2。

close([f1 f2])

创建两个具有指定编号的图窗。在每个图窗中包含一个线图。

figure(1)
plot(1:10)

Figure contains an axes object. The axes object contains an object of type line.

figure(2)
plot((1:10).^2)

Figure contains an axes object. The axes object contains an object of type line.

通过将第二个图窗的编号传递给 close 函数来关闭第二个图窗。

close(2)

创建一个图窗,指定其名称,然后创建一个线图。

figure('Name','Measured Data');
plot(1:10)

Figure Measured Data contains an axes object. The axes object contains an object of type line.

使用图窗名称关闭图窗。

close('Measured Data')

创建两个图窗,每个图窗包含一个线图。

f1 = figure;
plot(1:10)

Figure contains an axes object. The axes object contains an object of type line.

f2 = figure;
plot((1:10).^2)

Figure contains an axes object. The axes object contains an object of type line.

关闭图窗 f1。通过显示图窗状态来验证图窗是否关闭。

status = close(f1)
status = 
1

创建三个句柄可见的图窗,并在每个图窗中包含一个线图。

f1 = figure;
plot(1:10)

Figure contains an axes object. The axes object contains an object of type line.

f2 = figure;
plot((1:10).^2)

Figure contains an axes object. The axes object contains an object of type line.

f3 = figure;
plot(1./(1:10))

Figure contains an axes object. The axes object contains an object of type line.

同时关闭所有图窗。

close all

创建三个图窗,每个图窗包含一个线图。将最后一个图窗的 HandleVisibility 属性设置为 'off'。

f1 = figure;
plot(1:10)

Figure contains an axes object. The axes object contains an object of type line.

f2 = figure;
plot((1:10).^2)

Figure contains an axes object. The axes object contains an object of type line.

f3 = figure('HandleVisibility','off');
plot(1./(1:10))

Figure contains an axes object. The axes object contains an object of type line.

关闭所有图窗。请注意,您无法通过调用 close all 来关闭 f3,因为它包含隐藏句柄。

close all hidden

CloseRequestFcn 属性使您能够指定关闭请求回调,每当用户尝试关闭图窗窗口时都会执行该回调。例如,您可以显示一个对话框,要求确认或取消关闭操作,或者阻止用户关闭含有 UI 的图窗。

通过将 CloseRequestFcn 属性设置为空字符向量,创建一个窗口无法关闭的图窗。然后,在该图窗中添加一个线图。

f1 = figure('CloseRequestFcn','');
plot(1:10)

Figure contains an axes object. The axes object contains an object of type line.

创建另一个包含线图的图窗。

f2 = figure;
plot((1:10).^2)

Figure contains an axes object. The axes object contains an object of type line.

如果您尝试使用 close all 语法关闭这些图窗,MATLAB® 将只关闭 f2。要同时关闭 f1 和 f2,请使用 close all force 语法。

close all force

输入参数

全部折叠

要关闭的图窗,指定为一个或多个 Figure 对象、图窗编号或图窗名称。

  • 如果 fig 是图窗编号,则 MATLAB® 会搜索 Number 属性等于 fig 的现有图窗。默认情况下,Number 属性值显示在图窗的标题中。

  • 如果 fig 是图窗名称,则 MATLAB 会搜索 Name 属性等于 fig 的现有图窗。

示例: close(f) 关闭具有句柄 f 的图窗。

示例: close([f1 f2]) 关闭具有句柄 f1 和 f2 的图窗。

示例: close(1) 关闭具有编号 1 的图窗。

示例: close([1 2]) 关闭具有编号 1 和 2 的图窗。

示例: close('My Figure') 关闭具有名称 'My Figure' 的图窗。

示例: close('My First Figure','My Second Figure') 关闭具有名称 'My First Figure' 和 'My Second Figure' 的图窗。

提示

  • 要无条件删除所有图窗,请使用以下语句:

    set(groot,'ShowHiddenHandles','on')
    c = get(groot,'Children');
    delete(c)

  • 实现 CloseRequestFcn 回调时,不要调用 close。在回调的主体中调用 close 会产生导致 MATLAB 警告的递归。应使用 delete 函数实现回调。delete 会删除图窗,而不执行 CloseRequestFcn 回调。

  • 如果您在未指定 CloseRequestFcn 属性的情况下对图窗调用 close,closereq 属性的默认值会无条件地删除该图窗并关闭其窗口。要防止在调用 close 时删除,请实现 CloseRequestFcn 回调。

算法

close 函数使用以下语句计算指定图窗 f 的 CloseRequestFcn 属性:

eval(get(f,'CloseRequestFcn'))

CloseRequestFcn 使您能够在调用 close 后延迟或中止图窗的关闭。例如,可以显示一个对话框以确实用户是否真正希望关闭图窗或在关闭前保存并清理。

CloseRequestFcn 的默认值 closereq 使用 delete(get(groot,'CurrentFigure')) 关闭当前图窗。如果您指定了图窗句柄数组,close 会对每个图窗执行由 CloseRequestFcn 指定的回调。

如果因为某个错误而终止了 CloseRequestFcn 回调的执行,该图窗将不会关闭。

版本历史记录

在 R2006a 之前推出

另请参阅

函数

对象