本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

Figure 属性

控制图窗窗口的外观和行为

此处列出的属性适用于在 GUIDE 中使用的图窗或使用 figure 函数创建的图窗。对于使用 uifigure 函数创建的图窗,请参阅 UI Figure 属性

图窗是图或用户界面组件的容器。图窗属性控制特定图窗实例的外观和行为。要修改图窗的各个方面,请更改属性值。

从 R2014b 开始,您可以使用圆点表示法查询和设置属性。

f = figure;
u = f.Units;
f.Units = 'inches';

如果您使用的是早期版本,请改用 getset 函数。

窗口外观

全部展开

Figure 菜单栏显示方式,指定为 'figure''none'MenuBar 属性用于在图窗窗口顶部显示或隐藏默认菜单。指定 'figure' 可显示菜单栏。指定 'none' 将其隐藏。

此属性仅影响默认菜单,不影响通过 uimenu 命令定义的菜单。

WindowStyle 属性设置为 'Modal' 的图窗中,不显示菜单栏。如果一个含有 uimenu 子菜单项的图窗更改为 'Modal',则 uimenu 子菜单项仍然存在于图窗的 Children 属性中。但是,在 WindowStyle 设置为 'Modal' 时,这些 uimenu 不会显示出来。

注意

如果不想在图窗中显示默认菜单,则在创建图窗时请将此属性设置为 'none'

Figure 工具栏显示方式,指定为下列值之一:

  • 'auto' - 使用和 MenuBar 属性相同的值。

  • 'figure' - 显示工具栏。

  • 'none' - 不显示工具栏。

此属性仅影响默认工具栏。它不影响其他工具栏,例如照相机工具栏或绘图编辑工具栏。从图窗视图菜单选择图窗工具栏时,会将此属性设置为 'figure'

工具栏不在 WindowStyle 属性设置为 'Modal' 的图窗中显示。如果一个含有工具栏的图窗变为 'Modal',则工具栏子菜单项仍将存在于图窗的 Children 属性中。但是,在 WindowStyle 设置为 'Modal' 时,工具栏不会显示出来。

注意

如果想要隐藏默认工具栏,请在创建图窗时将此属性设置为 'none'

交互式 figure 停靠,指定为下列值之一:

  • 'on' - 图窗可以停靠在 MATLAB® 桌面上。菜单栏中的桌面 > 停靠图窗菜单项和停靠图窗按钮 会启用。

  • 'off' - MATLAB 禁用桌面 > 停靠图窗菜单项并且不显示图窗停靠按钮。

    如果 WindowStyle 设置为 'docked',则不能将 DockControls 属性设置为 'off'

MATLAB Online™ 不支持设置 DockControls 属性。

背景颜色,指定为 RGB 三元组、十六进制颜色代码、颜色名称或短名称。如果指定 'none',背景色将在屏幕上显示为黑色,但如果您打印图窗,则会将图窗窗口视为透明而打印背景。

对于自定义颜色,请指定 RGB 三元组或十六进制颜色代码。

  • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4 0.6 0.7]

  • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0F。这些值不区分大小写。因此,颜色代码 '#FF8800''#ff8800''#F80''#f80' 是等效的。

此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。

颜色名称短名称RGB 三元组十六进制颜色代码外观
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

'none'不适用不适用不适用无颜色

以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。

RGB 三元组十六进制颜色代码外观
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

数据类型: double | char

窗口样式,指定为下列值之一:

  • 'normal' - 此图窗窗口独立于其他窗口,并且在显示图窗时可以访问其他窗口。

  • 'modal' - 该图窗显示在所有现有图窗窗口的上方,并使这些窗口变得无法访问(只要顶层图窗存在并保持模态)。但是,任何在模态图窗之后创建的新图窗都会显示出来。

    存在多个模态窗口时,最新创建的窗口将会保持焦点并位于所有其他窗口之上,直到变得不可见、恢复为正常窗口样式或被删除。此时,焦点会重新回到上次具有焦点的窗口。

  • 'docked' - 图窗显示在桌面或文档窗口中。如果 WindowStyle 属性设置为 'docked',则无法将 DockControls 属性设置为 'off'MATLAB Online 中不支持 'docked' 选项。

注意

以下是 WindowStyle 属性的一些重要特性和一些推荐的最佳做法:

  • 创建 UI 窗口时,应始终指定 WindowStyle 属性。如果还想要设置图窗的 ResizePositionOuterPosition 属性,先要设置 WindowStyle 属性。

  • 您可以随时更改图窗的 WindowStyle 属性,包括图窗可见并包含子图窗的情况。但是,在某些系统上,设置该属性可能会导致图窗闪烁或者消失后重新显示,具体取决于系统的正常窗口和模态窗口的实现。为实现最佳视觉效果,应在创建时或图窗不可见时设置 WindowStyle 属性。

  • 对图窗调用 reset 并不会改变 WindowStyle 属性的值。

模态窗口样式行为

WindowStyle 设为 'modal' 时,图窗窗口将会捕获所有 MATLAB 窗口(只要可见)上的全部键盘和鼠标操作。属于应用程序而非 MATLAB 的窗口不受影响。

模态图窗获得焦点时键入 Ctrl+C 会导致图窗恢复到 'normal' WindowStyle 属性设置。这样用户可以在命令行键入内容。

WindowStyle 属性设置为 'modal' 并且 Visible 属性设置为 'off' 的图窗在 MATLAB 使它们变得可见之前不会以模态方式运行。因此,您可以隐藏模态窗口供以后重用,而不用销毁它。

模态图窗不显示菜单子级、内置菜单或工具栏。但是,在模态图窗中创建菜单或在具有菜单子级的图窗上将 WindowStyle 属性设置更改为 'modal' 并不是错误。Menu 对象会存在,而且图窗会保留它们。如果您将图窗的 WindowStyle 属性重置为 'normal',则会显示菜单。

窗口状态,指定为下列值之一:

  • 'normal' - 窗口显示为正常状态。

  • 'minimized' - 窗口被折叠,但您仍可以执行命令来获取或设置其属性、添加子级或在窗口中创建绘图。

  • 'maximized' - 窗口填满屏幕。操作系统提供的最小化、还原和关闭按钮出现在窗口的角落。如果窗口在正常状态下显示菜单和工具栏,则在这一状态下也会显示二者。

  • 'fullscreen' - 窗口填满屏幕。但是,操作系统提供的最小化、还原和关闭按钮将被隐藏。如果窗口在正常状态下显示菜单和工具栏,则在这一状态下也会显示二者。

点击操作系统提供的最小化、最大化或还原按钮将对 WindowState 属性进行相应的设置。按 Ctrl+F11(Windows® 和 Linux®)或 Ctrl+Command+f (Mac OS) 可以切换 'fullscreen' 状态。

不支持对已停靠的图窗或在 MATLAB Online 中设置 WindowState 属性。

位置

全部展开

可绘制区域的位置和大小,指定为 [left bottom width height] 形式的向量。此区域不包括图窗边框、标题栏、菜单栏和工具栏。

此表介绍 Position 向量中的每个元素。

元素说明
left从主画面左边缘到窗口的内部左边缘的距离。在具有多个监视器的系统上,此值可能为负数。

如果图窗已停靠,则此值相对于 MATLAB 桌面中的“图窗”面板。
bottom从主画面下边缘到窗口的内部下边缘的距离。在具有多个监视器的系统上,此值可能为负数。

如果图窗已停靠,则此值相对于 MATLAB 桌面中的“图窗”面板。
widthfigure 的左右内部边缘之间的距离。
height窗口的上下内部边缘之间的距离。

所有测量值都采用 Units 属性指定的单位。

图窗停靠时不能指定图窗的 Position 属性。

MATLAB Online 中,Position 向量的 bottomleft 元素被忽略。

要放置包括边框、标题栏、菜单栏和工具栏在内的整个窗口,请使用 OuterPosition 属性。

注意

Windows 操作系统会强制应用最小窗口宽度和最大窗口大小。如果您指定的图窗尺寸超出这些限制,将按照这些限制而不是指定的尺寸显示图窗。

测量单位,指定为下表中的值之一。

单位值说明
'pixels'(默认值)

像素。

从 R2015b 开始,以像素为单位的距离不再依赖 Windows 和 Macintosh 系统上的系统分辨率:

  • 在 Windows 系统上,一个像素是 1/96 英寸。

  • Macintosh 系统上,一个像素是 1/72 英寸。

在 Linux 系统上,一个像素的大小由系统分辨率确定。

'normalized'这些单位依据父容器进行归一化。容器的左下角映射到 (0,0),右上角映射到 (1,1)
'inches'英寸。
'centimeters'厘米。
'points'磅。1 磅等于 1/72 英寸。
'characters'

这些单位基于图形根对象的默认 uicontrol 字体:

  • 字符宽度 = 字母 x 的宽度。

  • 字符高度 = 两个文本行的基线之间的距离。

要访问默认的 uicontrol 字体,请使用 get(groot,'defaultuicontrolFontName')set(groot,'defaultuicontrolFontName')

MATLAB 从父对象的左下角测量所有单位。

此属性会影响 Position 属性。如果更改 Units 属性,请考虑在完成计算后将其值还原为默认值,以免影响采用默认值的其他函数。

指定 UnitsPosition 属性的顺序具有以下影响:

  • 如果您在 Position 属性之前指定 Units,则 MATLAB 会使用您指定的单位来设置 Position

  • 如果您在 Position 属性之后指定 Units 属性,则 MATLAB 会使用默认的 Units 来设置 position。然后,MATLAB 将 Position 值转换为以您指定的单位表示的等价值。

可绘制区域的位置和大小,指定为 [left bottom width height] 形式的向量。此区域不包括图窗边框、标题栏、菜单栏和工具栏。所有测量值都采用 Units 属性指定的单位。

此属性值等同于 Position 属性值。

外部边界的位置和大小,指定为 [left bottom width height] 形式的向量。此属性定义由图窗的外部边界围起的区域(包括边框、标题栏、菜单栏和工具栏)。

此表介绍该向量中的每个元素。

元素说明
left从主画面的左边缘到 figure 窗口的外部左边缘的距离。在具有多个监视器的系统上,此值可能为负数。

如果图窗已停靠,则此值相对于 MATLAB 桌面中的“图窗”面板。
bottom从主画面下边缘到 figure 窗口的外部下边缘的距离。在具有多个监视器的系统上,此值可能为负数。

如果图窗已停靠,则此值相对于 MATLAB 桌面中的“图窗”面板。
widthfigure 的左右外部边缘之间的距离。
heightfigure 的上下外部边缘之间的距离。

所有测量值都采用 Units 属性指定的单位。

图窗停靠时不能指定图窗的 OuterPosition 属性。

注意

Windows 操作系统会强制应用最小窗口宽度和最大窗口大小。如果您指定的图窗尺寸超出这些限制,将按照这些限制而不是指定的尺寸显示图窗。

此属性不会对图窗产生任何影响。

可调整大小的图窗,指定为 'on''off'。当此属性设置为 'on' 时,则可调整图窗大小。否则将无法调整其大小。

绘图

全部展开

图窗坐标区内容的颜色图,指定为由 RGB(红色、绿色、蓝色)三元组组成的 m×3 数组,这些三元组定义 m 种单独的颜色。

示例: figure('Colormap',[1 0 1; 0 0 1; 1 1 0]) 将颜色图设置为三种颜色:品红色、蓝色和黄色。

MATLAB 按行号访问这些颜色。

颜色图会影响由 surfaceimagepatch 函数创建的对象的渲染,但通常不会影响其他图形对象。

如果您设置了图窗的 Colormap 属性,图窗中的坐标区和图将使用相同的颜色图。

Axes 内容的透明度映射,指定为从 01 线性递增的有限 alpha 值数组。数组大小可以是 m×1 或 1×m。MATLAB 按 alpha 值在数组中的索引访问它们。Alphamap 可以为任意长度。

Alphamap 会影响由 surfaceimagepatch 函数创建的对象的渲染,但不会影响其他图形对象。

如果您设置了图窗的 Alphamap 属性,图窗中的坐标区和图将使用相同的 alpha 映射。

有关如何添加下一绘图的指令,指定为 'add''new''replace''replacechildren'

此表介绍每个值的作用。

属性值作用
'new'

创建一个新图窗并将其用作当前图窗。

'add'

在不清空或重置当前图窗的前提下添加新的图形对象。

'replacechildren'

在添加新对象之前删除所有未隐藏的坐标区对象。不重置图窗属性。

与使用 clf 命令等效。

'replace'

添加新的图形对象之前,删除所有的坐标区对象并将图窗属性重置为它们的默认值。

与使用 clf reset 命令等效。

考虑使用 newplot 函数处理 NextPlot 属性。有关详细信息,请参阅坐标区的 NextPlot 属性和为绘图准备图窗和坐标区

用于屏幕显示和打印的渲染器,指定为下列值之一:

  • 'opengl' - OpenGL® 渲染器。此选项允许 MATLAB 访问图形硬件(如果您的系统上有的话)。OpenGL 渲染器按从前到后的顺序显示对象,如监视器上所示。当与监视器平面处于同一位置时,线条始终会绘制在面的前端。

  • 'painters' - Painters 渲染器。该选项非常适合二维视图中的坐标区。在二维模式下,Painters 渲染器按子顺序(指定的顺序)为图形对象排序。在三维模式下,Painters 渲染器按从前到后的顺序为对象排序。但是,它可能无法正确地以三维方式绘制相交的多边形。

注意

'zbuffer' 选项已被删除。请改用 'opengl''painters'

MATLAB Online 不支持设置 Renderer 属性。

OpenGL 硬件和软件实现

所有运行 MATLAB 的计算机上都提供 OpenGL,因为 MATLAB 中内置了软件版本的 OpenGL。但是,如果您的图形硬件支持硬件加速版本的 OpenGL,则 MATLAB 会自动使用硬件加速版本来提高性能。

在某些情况下,MATLAB 自动使用软件 OpenGL,即使提供了硬件版本也是如此。例如,如果 MATLAB 检测到图形硬件存在已知的驱动程序问题或您正在 Windows 中使用虚拟机或远程桌面,它将会使用该软件版本。

MATLAB 在找不到可用的 OpenGL 库时会发出警告。

软件 OpenGL 选择

要从硬件切换到软件 OpenGL,请执行以下操作:

  • 在 Linux 系统中,使用命令 matlab -softwareopengl 启动 MATLAB。

  • 在 Windows 系统中,请在 MATLAB 中执行命令 opengl software,或者使用命令 matlab -softwareopengl 启动 MATLAB。

  • 在 Macintosh 系统上,不支持软件 OpenGL。

可以使用以下软件版本:

  • 在 Linux 系统上,MATLAB 使用 MATLAB 发行版中包含的 OpenGL 软件实现。

  • 在 Windows 上,OpenGL 是作为操作系统的一部分提供的。如果您在使用 OpenGL 时遇到问题,请与您的图形驱动程序供应商联系,以获取最新合格版本的 OpenGL。

  • Macintosh 系统上,无法使用软件 OpenGL。

确定 OpenGL 库版本

要确定 MATLAB 正在您的系统上使用的 OpenGL 库的版本和供应商,请调用 rendererinfo 函数。例如,此命令将获取当前坐标区的信息并将其存储在名为 info 的结构体中。

info = rendererinfo(gca)

此结构体还在 GraphicsRenderer 字段中提供图形渲染器的名称。例如,如果 MATLAB 使用的是硬件加速 OpenGL,该字段将返回 'OpenGL Hardware'。如果 MATLAB 使用的是软件 OpenGL,该字段将返回 'OpenGL Software'

XServer 连接中断

使用 Linux 时,如果与 XServer 的连接中断,则 MATLAB 可能会因分段违规而崩溃。如果出现这种情况,请确保系统安装了最新的 XServer。

在 Linux 系统中,还可以尝试升级 OpenGL 驱动程序,或者使用下面的命令通过软件 OpenGL 启动 MATLAB:

 matlab -softwareopengl

渲染器选择,指定为下列项之一:

  • 'auto' - MATLAB 将根据图窗中图形对象的大小和复杂性来选择用于打印和屏幕显示的渲染方法。

  • 'manual' - MATLAB 使用由 Renderer 属性所指定的渲染器。

如果将 Renderer 属性显式设置为 'painters''opengl',则 MATLAB 会将 RendererMode 属性设置为 'manual'

坐标区图形平滑处理,指定为 'on''off'。平滑处理可减少坐标区图形中的锯齿。如果 GraphicsSmoothing 设为 'on' 并且下列任一条件为 true,则 MATLAB 将对坐标区图形(和坐标区标尺)应用平滑处理技术:

  • Renderer 属性设置为 'painters'

  • Renderer 属性设置为 'opengl' 并且您的硬件卡支持 OpenGL。

如果坐标区图形主要包含垂直线条或水平线条,请考虑将 GraphicsSmoothing 属性设置为 'on' 并将线条的 AlignVertexCenters 属性设置为 'on'。平滑处理技术会牺牲一些清晰度以获得平滑效果,这一特点在此类图形中可能尤为明显。

注意

图形平滑处理对文本没有影响。无论 GraphicsSmoothing 属性设置为何值,MATLAB 都会对文本进行平滑处理。

MATLAB Online 不支持设置 GraphicsSmoothing 属性。

打印和导出

全部展开

打印或保存时页面上的图窗大小和位置,指定为 [left bottom width height] 形式的四元素向量。

  • leftbottom 值 - 控制从页面左下角到图窗左下角的距离。以非页面格式(例如 PNG 或 EPS 格式)保存图窗时,这些值将被忽略。

  • widthheight 值 - 控制图窗大小。如果宽度和高度值太大,则图窗可能无法达到指定的大小。如果图窗未达到特定大小,则图窗中的任何 UI 组件(例如 uicontrol 或 uitable)可能不会如期保存或打印。

PaperUnits 属性确定 PaperPosition 值的测量单位。考虑将 PaperUnits 属性设置为 'normalized'。该设置使 MATLAB 能够自动改变图窗大小,从而无论页面尺寸如何均以同样的相对量占据打印页面。

示例: figure('PaperPosition',[.25 .25 8 6]) 设置图窗的大小和位置以打印到 [.25 .25 8 6]

指示在打印或保存时使用显示的图窗大小的指令,指定为 'auto''manual'

  • 'auto' - 打印或保存的图窗大小与显示的图窗大小相匹配。PaperPosition 属性的 widthheight 值等于显示的图窗大小。leftbottom 值使图窗居中。如果显示的图窗大小发生变化,PaperPosition 属性将自动更新为相应的尺寸和位置值。

  • 'manual' - 打印或保存的图窗大小与显示的图窗大小可能不匹配。如果您要使用不同于所显示的大小打印或保存图窗,或者您不希望图窗居中置于打印或保存的页面上,请使用此选项。将 PaperPosition 属性设置为所需的大小和位置。如果显示的图窗大小发生变化,PaperPosition 属性不会自动更新。

要生成与显示的图窗具有相同大小和分辨率 (DPI) 的输出,请将图窗的 PaperPositionMode 属性设置为 'auto',并使用 print 函数与 -r0 选项保存图窗。-r0 选项可确保输出分辨率与显示分辨率相同。如果这两种分辨率不同,则以测量单位(英寸、厘米、磅)计,生成的输出大小与显示的图窗大小一致,但在像素上不一致。例如,如果显示分辨率为 100 DPI,则一个 4×5 英寸图窗有 400×500 个像素。如果输出分辨率为 200 DPI,则以英寸单位计,打印或保存的图窗具有相同大小,但具有 800×1000 个像素。

注意

从 R2016a 开始,默认值为 'auto'。以前的默认值为 'manual'

要更改默认值,请使用下列方法之一。

  • 设置打印预设。打印预设将应用于所有 MATLAB 会话。可以将打印预设设置为 'auto''manual',例如:

    matlab.graphics.internal.setPrintPreferences('DefaultPaperPositionMode','manual')
    要查询当前打印预设值,请使用以下命令。如果设置了预设,此命令将返回 'auto''manual'。如果未设置预设,此命令将返回 'unset'
    matlab.graphics.internal.getPrintPreferences

  • 在根对象上设置默认值。此选项只影响当前 MATLAB 会话中的新图窗,例如:

    set(groot,'defaultFigurePaperPositionMode','manual')

打印图窗或将其保存为分页格式(PDF 和 PostScript® 格式)时的自定义页面大小,指定为 [width height] 形式的二元素向量。在美国,默认值为 [8.5 11]。在欧洲和亚洲,默认值为 [21 29.7]

注意

如果您将图窗保存为文件,则 PaperSize 属性仅影响 PDF 和 PostScript 文件格式。其他文件格式将忽略此属性。使用 PaperPosition 属性控制所保存的图窗的大小。

PaperUnits 属性确定 PaperSize 属性的测量单位。如果 PaperUnits 属性设置为 'normalized',则您无法设置 PaperSize 属性。试图这样做会引发错误。

指定 PaperSize 属性会将 PaperType 属性设置为相应的类型(如果存在),否则设置为 'custom'

用于 PaperSizePaperPosition 的单位,指定为下列值之一:

  • 'inches' - 以英寸为单位的值。这是区域设置为 United States 时的默认值。

  • 'normalized' - 归一化的单位。页面的左下角映射到 (0,0),右上角映射到 (1,1)

  • 'centimeters' - 以厘米为单位的值。这是区域设置为 Europe 或 Asia 时的默认值。

  • 'points' - 以磅为单位的值。1 磅等于 1/72 英寸。

注意

如果您更改 PaperUnits 属性的值,则最好在完成计算后将该属性恢复为其原始值,以免影响其他假定 PaperUnits 属性未更改的函数。

打印图窗或将其保存为分页格式(PDF 和 PostScript 格式)时的页面方向,指定为下列值之一:

  • 'portrait' - 以页面的最长尺寸为纵向。

  • 'landscape' - 以页面的最长尺寸为横向。

有关详细信息,请参阅 orient 函数。

注意

使用文件 > 另存为时,只有 PDF 和全页 PS 格式使用 PaperOrientation 属性。其他格式会忽略这些值。

打印图窗或将其保存为分页格式(PDF 和 PostScript 格式)时的标准页面大小,指定为下表中的值之一。指定 PaperType 属性会将 PaperSize 属性设置为相应的页面大小。

页面大小(宽 x 高)

'usletter'

8.5×11 英寸(美国的默认值)

'uslegal'

8.5×14 英寸

'tabloid'

11×17 英寸

'a0'

84.1×118.9 厘米

'a1'

59.4×84.1 厘米

'a2'

42×59.4 厘米

'a3'

29.7×42 厘米

'a4'

21×29.7 厘米(欧洲和亚洲的默认值)

'a5'

14.8×21 厘米

'b0'

102.9×145.6 厘米

'b1

72.8×102.8 厘米

'b2'

51.4×72.8 厘米

'b3'

36.4×51.4 厘米

'b4'

25.7×36.4 厘米

'b5'

18.2×25.7 厘米

'arch-a'

9×12 英寸

'arch-b'

12×18 英寸

'arch-c'

18×24 英寸

'arch-d'

24×36 英寸

'arch-e'

36×48 英寸

'a'

8.5×11 英寸

'b'

11×17 英寸

'c'

17×22 英寸

'd'

22×34 英寸

'e'

34×43 英寸

'custom'

自定义页面大小。使用 PaperSize 属性指定非标准页面大小会将 PaperPosition 设置为此值。

打印或保存时的图窗背景色,指定为下列值之一:

  • 'on' - 将图窗背景色和坐标区背景色更改为白色。

  • 'off' - 使用与所显示颜色相同的颜色。若要更改显示的图窗背景色,请使用图窗的 Color 属性。若要更改坐标区背景色,请使用坐标区的 Color 属性。

鼠标指针

全部展开

指针符号,指定为下表中的符号名称之一,或指定为 'custom'。符号的外观与操作系统相关。

符号名称

生成的符号(与系统相关)

'arrow'

'ibeam'

'crosshair'

'watch'(系统忙)

'topl''botr'

'topr''botl'

'circle'

'cross'

'fleur'

'left''right'

'top' 'bottom'

'hand'

注意

'fullcrosshair' 选项已在 R2014b 中删除。

自定义指针符号

要创建自定义指针符号,请将 Pointer 属性设置为 'custom' 并使用 PointerShapeCData 属性定义符号。有关详细信息,请参阅 PointerShapeCData 属性。

自定义指针符号,指定为 32×32 矩阵(对于 32×32 像素指针)或指定为 16×16 矩阵(对于 16×16 像素指针)。当您将 Pointer 属性设置为 'custom' 时,图窗将使用此指针符号。

矩阵中的每个元素分别为指针中的 1 个像素定义亮度级别。矩阵的元素 (1,1) 与指针左上角的像素对应。将矩阵元素设置为以下值之一:

  • 1 - 黑色像素。

  • 2 - 白色像素。

  • NaN - 透明像素,这样底层屏幕内容就能显示出来。

指针的活动像素,指定为二元素向量。该向量包含 PointerShapeCData 矩阵中特定元素的行和列索引,该元素与所需的活动像素对应。默认值 [1 1] 对应于指针左上角的像素。

如果您指定的值位于 PointerShapeCData 矩阵范围外,则指针将改用默认活动像素 [1 1]

仅当 Pointer 属性设置为 'custom' 时,此属性才适用。

交互性

全部展开

当前图窗中的目标坐标区,指定为 Axes 对象、PolarAxes 对象或图形对象,如 HeatmapChart

在存在坐标区子级的所有图窗中,始终存在当前坐标区。当前坐标区不必是最顶层的坐标区,并且将坐标区设置为当前坐标区不会将其重新叠放在所有其他坐标区上。如果图窗不包含坐标区,则 get(gcf,'CurrentAxes') 命令返回一个空数组。

查询 CurrentAxes 属性来获取当前坐标区对象,而不强制创建不存在的坐标区。

当前对象,以图窗的子对象形式返回。MATLAB 将 CurrentObject 属性设置为在图窗中点击的最后一个对象。此对象是视图中位于最前面的对象。

子对象的 HitTest 属性控制该对象是否可以成为 CurrentObject

点击其 HandleVisibility 属性为 'off' 的对象会将 CurrentObject 属性设置为空 GraphicsPlaceholder 数组。为避免在用户点击隐藏对象时返回空数组,请将隐藏对象的 HitTest 属性设置为 'off'

使用 gco 命令作为获取此属性值的替代方法。

当前点,以二元素向量形式返回。该向量包含鼠标指针的 (x, y) 坐标,从图窗左下角开始测量。值采用 Units 属性指定的单位。

执行以下任一操作时坐标都会更新:

  • 在图窗中按下鼠标按键。

  • 在图窗中按下鼠标按键后松开鼠标按键。

  • 在图窗中按下鼠标按键,然后在图窗外松开鼠标按键。

  • 在图窗内转动滚轮。

  • WindowButtonMotionFcn 属性不为空的情况下,在图窗内移动鼠标(不按任何按键)。

如果图窗具有响应鼠标交互的回调,并且您触发该回调的速度比系统执行代码的速度快,则坐标可能不会反映指针的实际位置,而是反映回调开始执行时的位置。

如果您使用 CurrentPoint 属性绘制各点,则坐标值可能包含舍入误差。

当前字符,以按下的最后一个键的字符形式返回。当图窗具有焦点且用户按下某个键时,此属性会更新。

注意

Selected 属性的行为在 R2014b 中已经改变,不推荐使用。它对 Figure 对象不会再产生任何影响。在以后的版本中可能会删除该属性。

注意

不推荐使用 SelectionHighlight 属性。在以后的版本中可能会删除该属性。

此属性不会对图窗产生任何影响。

鼠标选择类型,返回为 'normal''extend''alt''open'。此属性提供有关图窗中发生的最后一次按下鼠标按键的信息。

下表列出了可能的 SelectionType 值以及生成这些值的用户操作。

对应的操作

'normal'

点击鼠标左键。

'extend'

以下任一操作:

  • Shift-点击鼠标左键。

  • 点击鼠标中键。

  • 同时点击鼠标左键和右键。

'alt'

下列任一操作:

  • Control-点击鼠标左键。

  • 点击鼠标右键。

'open'

双击任何鼠标按键。

上下文菜单,指定为 ContextMenu 对象。使用此属性可在用户右键点击 UI 组件时显示上下文菜单。使用 uicontextmenu 函数创建上下文菜单。

Figure 可见性,指定为 'on''off'Visible 属性确定 figure 是否显示在屏幕上。如果 figure 的 Visible 属性设置为 'off',则整个 figure 不可见,但您仍可以指定并访问它的属性。

更改不可见的 figure 的大小会在 figure 变得可见时触发 SizeChangedFcn 回调。

注意

更改 figure 的 Visible 属性并不会更改其子组件的 Visible 属性,即使隐藏 figure 也不能阻止它的子组件显示。

常见回调

全部展开

按钮按下回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

只要用户点击图窗中的空白区域,就会执行此回调。

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

使用 SelectionType 属性确定用户是否按下了修改键。

组件创建函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

此属性指定要在 MATLAB 创建组件时执行的回调函数。MATLAB 将在执行 CreateFcn 回调之前初始化所有的组件属性值。如果不指定 CreateFcn 属性,则 MATLAB 执行默认的创建函数。

可在您的 CreateFcn 代码中使用 gcbo 函数获取要创建的组件对象。

对现有组件对象设置 CreateFcn 属性没有任何作用。

组件删除函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

DeleteFcn 属性指定要在 MATLAB 删除组件时(例如,当用户关闭窗口时)执行的回调函数。MATLAB 会在销毁组件对象的属性之前执行 DeleteFcn 回调。如果不指定 DeleteFcn 属性,则 MATLAB 执行默认的删除函数。

可在您的 DeleteFcn 代码中使用 gcbo 函数获取要删除的组件对象。

键盘回调

全部展开

按键回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

当用户按下一个键且图窗或子对象具有焦点时,将执行此回调函数。如果用户在 UIControlTable 组件上按下某个键,回调不会执行,除非 Enable 属性设置为 'off'

如果用户几乎在同一时间按下多个键,MATLAB 将检测所有键。

KeyPressFcn 回调可以访问有关用户与键盘交互的特定信息。MATLAB 将 KeyData 对象中的此信息作为第二个参数传递给回调函数。下表列出了此对象的属性。

属性说明
Character

作为按下一个或多个键的结果而显示的字符。

按特定键或使用 Ctrl 键修改某些键可能会在 Character 属性中放置无法打印的字符。

单独按特定键(例如 CtrlAltShift)不会生成 Character 数据。

Modifier

包含按下的修改键的名称的元胞数组,例如 controlaltshift。如果未按下修改键,则元胞数组为空。

Key

按下的键,通过键上的小写字母标签或描述性字词(如 'space')标识。

Source当用户按下该键时获取焦点的对象。
EventName'KeyPress'

有关指定回调属性值和使用回调参数的详细信息,请参阅如何指定回调属性值

CurrentCharacter 属性还返回字符信息。

释放键回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

当用户按下一个键且图窗或子对象具有焦点时,将执行此回调函数。如果用户在 UIControlTable 组件上释放某个键,回调不会执行,除非 Enable 属性设置为 'off'

KeyReleaseFcn 回调可以访问有关用户与键盘交互的特定信息。MATLAB 将 KeyData 对象中的此信息作为第二个参数传递给回调函数。下表列出了此对象的属性。

属性说明
Character

与释放的一个或多个键对应的字符。

某些键或组合键可能会在此属性中返回无法打印的字符。

单独按下并释放特定键(例如 CtrlAltShift)不会生成 Character 数据。

Modifier

包含释放的修改键的名称的元胞数组,例如 controlaltshift。如果未释放修改键,则元胞数组为空。

Key

释放的键,通过键上的小写字母标签或描述性字词(如 'space')标识。

Source释放键时具有焦点的对象。
EventName'KeyRelease'

有关指定回调属性值和使用回调参数的详细信息,请参阅如何指定回调属性值

窗口回调

全部展开

关闭请求回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

用户试图关闭图窗窗口时会执行该回调。例如,您可以显示一个对话框,询问用户确认或取消关闭操作,或者阻止用户关闭含有 UI 的图窗。

基本机制为:

  1. 用户从命令行发出 closeclose all 命令、通过计算机的窗口管理器菜单关闭图窗,或者通过退出 MATLAB 关闭图窗。

  2. 关闭操作执行图窗的 CloseRequestFcn 属性定义的函数。默认函数为 closereq

    closereq 函数无条件删除当前图窗,并销毁窗口。closereq 函数接受下述事实,即 close 命令在调用相应关闭请求函数之前将指定为参数的每个图窗设置为当前图窗。

closereq 函数在图窗删除期间遵循 ShowHiddenHandles 属性设置并且不删除隐藏的图窗。

除非关闭请求函数调用 deleteclose 函数,否则 MATLAB 永远不会关闭图窗。(如果您是用非销毁关闭请求函数创建的窗口,则可以从命令行调用 delete(f)。)

示例:用来显示对话框的代码 CloseRequestFcn

本示例展示如何为关闭请求函数编码以显示要求用户确认关闭操作的问题对话框。将该代码保存到您系统上的可写入文件夹中。

function my_closereq(src,callbackdata)
% Close request function 
% to display a question dialog box 
   selection = questdlg('Close This Figure?',...
      'Close Request Function',...
      'Yes','No','Yes'); 
   switch selection 
      case 'Yes'
         delete(gcf)
      case 'No'
      return 
   end
end

现在创建一个图窗,为 CloseRequestFcn 指定 my_closereq

figure('CloseRequestFcn',@my_closereq)

关闭图窗窗口并显示问题对话框。

大小更改回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

定义此回调在此容器的大小更改时(例如,当用户调整窗口大小时)自定义 App 布局。

SizeChangedFcn 回调在下列情况下执行:

  • 此容器首次变得可见。

  • 此容器在大小改变时可见。

  • 此容器在大小改变后首次变得可见。如果容器在大小改变时不可见,但后来变得可见,就属于这种情况。

定义 SizeChangedFcn 回调时要考虑的其他重要事项:

  • 考虑将此容器推迟到 SizeChangedFcn 使用的所有变量都定义之后再显示。此做法可避免 SizeChangedFcn 回调返回错误。要延迟显示容器,请将其 Visible 属性设置为 'off'。然后,在定义您的 SizeChangedFcn 回调使用的变量之后将 Visible 属性设置为 'on'

  • 如果您的 App 包含嵌套容器,它们从里向外调整大小。

  • 要访问从 SizeChangedFcn 中调整大小的容器,请指向源对象(回调中的第一个输入参数)或使用 gcbo 函数。

提示

作为指定 SizeChangedFcn 回调的一种简单替代方法,您可以将置于容器中的所有对象的 Units 属性都设置为 'normalized'。这样做会使这些组件随容器按比例缩放。

示例:编辑具有固定高度的字段

使用 SizeChangedFcn 回调来约束 UI 组件的大小。例如,以下代码在窗口顶部创建一个 UI,它具有一个编辑字段。当用户调整窗口大小时,sbar 函数将其高度限制为 20 像素。此函数还将编辑字段的宽度设置为等于图窗的宽度。

如果您使用 R2014b 或更高版本,请使用圆点表示法设置和查询属性:

function myui
f = figure('Visible','off','SizeChangedFcn',@sbar); 
u = uicontrol('Style','edit','Tag','StatusBar');
f.Visible = 'on';
    function sbar(src,callbackdata)
       old_units = src.Units;
       src.Units = 'pixels';
       sbar_units = u.Units;
       u.Units = 'pixels';
       fpos = src.Position;
       upos = [1 fpos(4) - 20 fpos(3) 20];
       u.Position = upos;
       u.Units = sbar_units;
       src.Units = old_units;
       u.Visible = 'on';
    end
end

如果您使用 R2014a 或更低版本,请改用以下代码。

function myui
f = figure('Visible','off','SizeChangedFcn',@sbar); 
u = uicontrol('Style','edit','Tag','StatusBar');
set(f,'Visible','on');
    function sbar(src,callbackdata)
       old_units = get(src,'Units');
       set(src,'Units','pixels');
       sbar_units = get(u,'Units');
       set(u,'Units','pixels');
       fpos = get(src,'Position');
       upos = [1 fpos(4) - 20 fpos(3) 20];
       set(u,'Position',upos);
       set(u,'Units',sbar_units);
       set(src,'Units',old_units);
       set(u,'Visible','on');
    end
end

窗口内按键按下回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

当用户点击图窗中的任何位置或其子对象之一时,将执行此回调。如果用户点击 UIControlTable 组件,回调不会执行,除非 Enable 属性设置为 'off'

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

窗口内按键移动回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

通常,用户在图窗内移动指针时会执行此回调函数。但是,如果用户点击并按住鼠标按键并且将指针移到图窗之外,则在指针位于图窗之外时将执行 WindowButtonMotionFcn 回调。

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

示例:简单的绘图 App

以下示例说明如何创建一个使用 WindowButtonMotionFcn 回调的绘图 App。将以下代码复制并粘贴到编辑器中并运行它。然后使用鼠标绘制一组连接的线段:

  • 在坐标区内点击并拖动以绘制第一个线段。

  • 再次点击以定义该线段的锚点。

  • 移动鼠标以添加另一个线段。

  • 右键点击可终止绘制模式。

function drawing_app
figure('WindowButtonDownFcn',@wbdcb)
ah = axes('SortMethod','childorder');
axis ([1 10 1 10])
title('Click and drag')
   function wbdcb(src,callbackdata)
     seltype = src.SelectionType;
     % This code uses dot notation to set properties
     % Dot notation runs in R2014b and later.
     % For R2014a and earlier: seltype = get(src,'SelectionType');
     if strcmp(seltype,'normal')
        src.Pointer = 'circle';
        cp = ah.CurrentPoint;
        % For R2014a and earlier: 
        % set(src,'Pointer','circle');
        % cp = get(ah,'CurrentPoint');
        xinit = cp(1,1);
        yinit = cp(1,2);
        hl = line('XData',xinit,'YData',yinit,...
        'Marker','p','color','b');
        src.WindowButtonMotionFcn = @wbmcb;
        src.WindowButtonUpFcn = @wbucb;
        % For R2014a and earlier: 
        % set(src,'WindowButtonMotionFcn',@wbmcb);
        % set(src,'WindowButtonUpFcn',@wbucb);

     end    
 
        function wbmcb(src,callbackdata)
           cp = ah.CurrentPoint;
           % For R2014a and earlier: 
           % cp = get(ah,'CurrentPoint');
           xdat = [xinit,cp(1,1)];
           ydat = [yinit,cp(1,2)];
           hl.XData = xdat;
           hl.YData = ydat;
           % For R2014a and earlier: 
           % set(hl,'XData',xdat);
           % set(hl,'YData',ydat);
           drawnow
        end
   
        function wbucb(src,callbackdata)
           last_seltype = src.SelectionType;
           % For R2014a and earlier: 
           % last_seltype = get(src,'SelectionType');
           if strcmp(last_seltype,'alt')
              src.Pointer = 'arrow';
              src.WindowButtonMotionFcn = '';
              src.WindowButtonUpFcn = '';
              % For R2014a and earlier:
              % set(src,'Pointer','arrow');
              % set(src,'WindowButtonMotionFcn','');
              % set(src,'WindowButtonUpFcn','');
           else
              return
           end
        end
  end
end

窗口内按键弹起回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

当用户在图窗中的任何位置或其子对象之一中释放鼠标按键时,将执行此回调。如果用户在 UIControlTable 组件上释放鼠标按键,回调不会执行,除非 Enable 属性设置为 'off'

按键弹起操作与图窗中的按键按下操作相关联。当按键按下操作发生时,鼠标指针必须位于图窗内部,但在按键弹起操作发生时,它可以在图窗外部。

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

窗口按键回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

当用户按下一个键且图窗或子对象具有焦点时,将执行此回调函数。

此回调函数可以访问有关用户与键盘的交互的特定信息。MATLAB 将 KeyData 对象中的此信息作为第二个参数传递给回调函数。下表列出了此对象的属性。

属性说明
Character

作为按下一个或多个键的结果而显示的字符。

按特定键或使用 Ctrl 键修改某些键可能会在此属性中返回无法打印的字符。

单独按下并释放特定键(例如 CtrlAltShift)不会生成 Character 数据。

Modifier

包含释放的修改键的名称的元胞数组,例如 controlaltshift。如果未释放修改键,则元胞数组为空。

Key

释放的键,通过键上的小写字母标签或描述性字词(如 'space')标识。

Source释放键时具有焦点的对象。
EventName'KeyRelease'

有关指定回调属性值和使用回调参数的详细信息,请参阅如何指定回调属性值

窗口释放键回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

当用户释放键且图窗或子对象具有焦点时,将执行此回调函数。

此回调函数可以访问有关用户与键盘的交互的特定信息。MATLAB 将 KeyData 对象中的此信息作为第二个参数传递给回调函数。下表列出了此对象的属性。

属性说明
Character

与释放的一个或多个键对应的字符。

某些键或组合键可能会在此属性中返回无法打印的字符。

单独按下并释放特定键(例如 CtrlAltShift)不会生成 Character 数据。

Modifier

包含释放的修改键的名称的元胞数组,例如 controlaltshift。如果未释放修改键,则元胞数组为空。

Key

释放的键,通过键上的小写字母标签或描述性字词(如 'space')标识。

Source释放键时具有焦点的对象。
EventName'KeyRelease'

有关指定回调属性值和使用回调参数的详细信息,请参阅如何指定回调属性值

窗口滚轮回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

当用户转动滚轮且图窗或其任一子组件具有焦点时时,将执行此回调。但是,其他对象可以捕获滚轮移动和干扰此回调的执行。

执行此回调对 CurrentObjectSelectionType 属性没有影响。

当用户转动滚轮时,WindowScrollWheelFcn 回调可以访问特定信息。MATLAB 将 ScrollWheelData 对象中的此信息作为第二个参数传递给回调函数。下表列出了 ScrollWheelData 对象的属性。

属性

内容

VerticalScrollCount

正数或负数,表示滚轮点击的方向和数量。向下滚动返回正值。向上滚动返回负值。

垂直滚动计数是自上次执行回调以来发生的所有滚轮点击的总次数。通常,值为 1-1。但是,如果 WindowScrollWheelFcn 回调需要很长时间才能返回或者用户转动滚轮的速度太快,则滚动计数的值会大一些。

VerticalScrollAmount

每转动一次滚轮所滚动的行数。通常,值为 3,但某些系统可能会返回不同值,具体取决于鼠标的配置方式。

Source

执行回调的对象。

EventName'WindowScrollWheel'

有关指定回调属性值和使用回调参数的详细信息,请参阅如何指定回调属性值

示例:用于更改 x 坐标轴范围的 App

以下示例说明如何创建一个用于显示绘图的 App。用户转动鼠标滚轮即可更改 x 轴的范围。将以下代码复制并粘贴到编辑器中并运行它。

function scroll_wheel
% Shows how to use WindowScrollWheelFcn property
%
   f = figure('WindowScrollWheelFcn',@figScroll,'Name','Scroll Wheel Demo');
   x = [0:.1:40];
   y = 4.*cos(x)./(x+2);
   a = axes; 
   h = plot(x,y);
   title('Rotate the scroll wheel')

   function figScroll(src,callbackdata)
      if callbackdata.VerticalScrollCount > 0 
         xd = h.XData;
         % This code uses dot notation to set properties
         % Dot notation runs in R2014b and later.
         % For R2014a and earlier: xd = get(h,'XData');
         inc = xd(end)/20;
         x = [0:.1:xd(end)+inc];
         re_eval(x)
      elseif callbackdata.VerticalScrollCount < 0 
         xd = h.XData;
         % For R2014a and earlier: xd = get(h,'XData');
         inc = xd(end)/20;
         x = [0:.1:xd(end)-inc+.1]; % Don't let xd = 0;
         re_eval(x)
      end
   end

   function re_eval(x)
      y = 4.*cos(x)./(x+2);
      h.YData = y;
      h.XData = x;
      a.XLim = [0 x(end)];
      % For R2014a and earlier: 
      % set(h,'YData',y);
      % set(h,'XData',x);
      % set(a,'XLim',[0 x(end)]);
      drawnow
   end
end

大小调整回调函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

注意

不推荐使用 ResizeFcn 属性。在以后的版本中可能会删除该属性。请改用 SizeChangedFcn

数据类型: function_handle | cell | char

回调执行控件

全部展开

回调中断,指定为 'on''off'Interruptible 属性确定是否可以中断运行中回调。

有以下两种回调状态要考虑:

  • 运行中回调是当前正在执行的回调。

  • 中断回调是试图中断运行中回调的回调。

每当 MATLAB 调用回调时,回调都会试图中断正在运行的回调(如果存在)。运行中回调所属对象的 Interruptible 属性决定着是否允许中断:

  • 'on' 允许其他回调中断对象的回调。中断发生在 MATLAB 处理队列的下一个位置,例如当存在 drawnowfiguregetframewaitforpause 时。

    • 如果运行中回调包含以上命令之一,则 MATLAB 将在此时停止执行回调并执行中断回调。当中断回调完成时,MATLAB 将恢复执行运行中回调。

    • 如果运行中回调不包含以上命令之一,则 MATLAB 执行完当前回调,不会出现任何中断。

  • 'off' 阻止所有中断尝试。由中断回调所属的对象的 BusyAction 属性决定是放弃该中断回调还是将其放入队列中。

注意

回调的中断和执行在以下情况下会有不同的表现:

  • 如果中断回调是 DeleteFcnCloseRequestFcnSizeChangedFcn 回调,则无论是否存在 Interruptible 属性值都会发生中断。

  • 如果运行中回调当前正在执行 waitfor 函数,则无论是否存在 Interruptible 属性值都会发生中断。

  • Timer 对象根据排定时间执行,而不管 Interruptible 属性值如何。

  • 发生中断时,MATLAB 不保存属性状态或显示内容。例如,gcagcf 命令返回的对象可能会在另一个回调执行时发生改变。

有关演示 InterruptibleBusyAction 属性如何影响程序行为的示例,请参阅中断回调执行

回调排队,指定为 'queue'(默认值)或 'cancel'BusyAction 属性决定 MATLAB 如何处理中断回调的执行。有以下两种回调状态要考虑:

  • 运行中回调是当前正在执行的回调。

  • 中断回调是试图中断运行中回调的回调。

中断回调的来源的 BusyAction 属性决定 MATLAB 如何处理其执行。BusyAction 属性具有下列值:

  • 'queue' - 将中断回调放入队列中,以便在运行中回调执行完毕后进行处理。

  • 'cancel' - 不执行中断回调。

无论何时 MATLAB 调用回调,该回调都会试图中断正在执行的回调。运行中回调所属对象的 Interruptible 属性确定是否允许回调。如果 Interruptible 设置为:

  • on - 在下一个时间点(MATLAB 处理队列时)发生中断。这是默认设置。

  • off - BusyAction 属性(中断回调所属对象的属性)确定 MATLAB 是将中断回调纳入队列还是将其忽略。

有关演示 BusyActionInterruptible 属性如何影响程序行为的示例,请参阅中断回调执行

变为当前对象的能力,指定为 'on''off'

  • 'on' - 当用户点击正在运行的 App 中的组件时,将当前对象设置为 FigureFiguregco 函数的 CurrentObject 属性都返回 Figure 作为当前对象。

  • 'off' - 当用户点击正在运行的 App 中的图窗时,当前对象不会更新。

此属性为只读

删除状态,以 'off''on' 形式返回。当 DeleteFcn 回调开始执行时,MATLAB 会将 BeingDeleted 属性设置为 'on'BeingDeleted 属性将一直保持 'on' 设置状态,直到组件对象不再存在为止。

在查询或修改对象之前,请先检查其 BeingDeleted 属性的值,以确认它不是待删除项。

父级/子级

全部展开

Figure 父级,以根对象的形式返回。

Figure 的子级,以空 GraphicsPlaceholder 或一维对象数组的形式返回。

不能使用 Children 属性添加或删除子级。使用该属性查看子级列表或对子级重新排序。子级的顺序反映了组件在屏幕上的前后顺序(层叠顺序)。MATLAB 可能不允许您更改某些对象的顺序。例如,UIControlLegend 对象始终位于 Axes 对象的前面。

要向该列表中添加子级,请将子组件的 Parent 属性设置为 Figure 对象。

HandleVisibility 属性设为 'off' 的对象不会列在 Children 属性中。

figure 对象的可见性,指定为 'on''callback''off'

此属性确定 figure 是否在父级(根)的子级列表中。HandleVisibility 可用于防止命令行用户无意中在仅包含用户界面设备(例如对话框)的图窗中绘图,或者意外删除了该图窗。

如果对象不在其父级的子级列表中,则通过搜索对象层次结构或查询属性来查找对象的函数将不能返回该对象。此类函数包括 getfindobjgcagcfgconewplotclaclfclose

使用 'callback''off' 设置限制 HandleVisibility 属性值时,对象不会显示在其父对象的 Children 属性中,图窗不会显示在根的 CurrentFigure 属性中,对象不会显示在根的 CallbackObject 属性或图窗的 CurrentObject 属性中,而坐标区也不会显示在其父坐标区的 CurrentAxes 属性中。

可以将根的 ShowHiddenHandles 属性设置为 'on' 以使所有对象可见,而不管其 HandleVisibility 设置如何(这不影响 HandleVisibility 属性的值)。

标识符

全部展开

图窗的名称,指定为字符向量或字符串标量。

示例: figure('Name','Results') 将图窗的名称设置为 'Results'

默认情况下,名称为 'Figure n',其中 n 是整数。如果您指定 Name 属性,图窗的标题将变为 'Figure n: name'。如果您希望只显示 Name 值,请将 IntegerHandleNumberTitle 设置为 'off'

此属性为只读

图窗的编号,以整数或空数组形式返回。您可以使用该值表示图窗。例如,figure(2) 使 Number 属性值为 2 的图窗成为当前图窗。

如果 IntegerHandle 属性设置为 'off',则 Number 属性为空。

如果 IntegerHandle'on',则 Number 属性是整数。删除该图窗时,MATLAB 会对下一个图窗重用该编号。

带编号的标题,指定为 'on''off'。将此属性设置为 'on' 时,图窗的标题会包含短语 'Figure n',其中 n 是属性 Number 的值。

NumberTitleIntegerHandle 必须都设置为 'on' 才能显示标题中的编号。

使用整数句柄,指定为 'on''off'

如果将 IntegerHandle 属性设置为 'on',则 MATLAB 会查找现有图窗不使用的最小整数值并将 Number 属性设置为该值。如果删除某图窗,MATLAB 可以将原图窗的编号用于新图窗。

如果将 IntegerHandle 属性设置为 'off',则 MATLAB 不会为图窗分配整数值,而是会将 Number 属性设为空数组。

要在标题栏中显示图窗编号,IntegerHandleNumberTitle 必须设置为 'on'

用于保存图窗的文件名,指定为字符向量或字符串标量。GUIDE 使用该属性存储它保存的 UI 布局文件的名称。

示例: figure('FileName','myfile.fig') 将文件名设置为 myfile.fig

此属性为只读

Figure 对象的类型,以 'figure' 形式返回。使用该属性在绘制层次结构中查找指定类型的所有对象。

对象标识符,指定为字符向量或字符串标量。可以指定唯一的 Tag 值以便用作 App 中任意组件对象的标识符。如果需要访问您代码中其他位置的对象,可以使用 findobj 函数基于 Tag 值搜索对象。

示例: figure('Tag','plotwindow') 创建图窗,其标记标识符是 'plotwindow'

用户数据,指定为任何数组。指定 UserData 对在 App 内共享数据很有用。有关详细信息,请参阅在回调之间共享数据

在 R2006a 之前推出