主要内容

Figure

图窗窗口

    说明

    图窗是图形或 App 的容器。在创建图窗后,使用 Figure 对象修改其外观和行为。

    创建对象

    创建 Figure 对象有多种方法:

    • 通过使用 figure 函数创建一个配置为用于图形和数据探索任务的图窗。许多图形函数会自动创建这样一个图窗。

    • 通过使用 uifigure 函数创建一个配置为用于 App 构建的图窗。App 设计工具会自动创建这样一个图窗。

    创建图窗的方式会影响 Figure 对象的默认属性值。有关详细信息,请参阅使用 figure 和 uifigure 创建的图窗之间的差异

    属性

    全部展开

    窗口外观

    背景颜色,指定为 RGB 三元组、十六进制颜色代码或下表中列出的颜色选项之一。

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

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

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

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

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

    Sample of the color red

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

    Sample of the color green

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

    Sample of the color blue

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

    Sample of the color cyan

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

    Sample of the color magenta

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

    Sample of the color yellow

    "black""k"[0 0 0]"#000000"

    Sample of the color black

    "white""w"[1 1 1]"#FFFFFF"

    Sample of the color white

    "none"不适用不适用不适用无颜色

    下表列出了浅色和深色主题中绘图的默认调色板。

    调色板调色板颜色

    "gem" - 浅色主题默认值

    在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。

    Sample of the "gem" color palette

    "glow" - 深色主题默认值

    Sample of the "glow" color palette

    您可以使用 orderedcolorsrgb2hex 函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem" 调色板的 RGB 三元组并将其转换为十六进制颜色代码。

    RGB = orderedcolors("gem");
    H = rgb2hex(RGB);

    在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder") 获取 RGB 三元组。

    在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255)) 获取十六进制颜色代码。

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

    • 'docked' - 图窗停靠到更大的容器中。此值是使用 figure 函数创建的图窗的默认值;这些图窗默认停靠在图窗容器中。

      当您查询 WindowStyle 属性时,如果图窗停靠在桌面或图窗容器中,该属性将返回 'docked'。但是,当您将 WindowStyle 属性设置为 'docked' 时,图窗会停靠在桌面中。

    • 'normal' - 图窗显示在一个独立窗口中,该窗口独立于其他 MATLAB® 窗口。此值是使用 uifigure 函数创建的图窗的默认值。

    • 'modal' - 该图窗以正常窗口样式显示在所有现有图窗窗口的上方,并使这些窗口变得无法访问(只要顶层图窗存在并保持模态)。

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

    • 'alwaysontop' - 图窗显示在所有其他窗口的顶部,包括模态图窗窗口和来自非 MATLAB 应用程序的窗口。其他窗口仍可访问。

    指定停靠图窗的位置会自动取消停靠该图窗并将 WindowStyle 属性设置为 'normal'

    注意

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

    • 当您为 App 创建图窗时,请指定 WindowStyle 属性。如果还想要设置图窗的 ResizePosition 属性,先要设置 WindowStyle 属性。

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

    模态窗口样式行为

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

    当模态图窗具有焦点时按下 Ctrl+C 会将该图窗的 WindowStyle 属性设置为 'normal'。此操作允许用户在命令行中键入内容。

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

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

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

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

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

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

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

    在停靠图窗上设置此属性会取消停靠该图窗并将 WindowState 属性设置为 'normal'

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

    MATLAB Online™ 中设置 WindowState 属性不受支持。

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

    对于使用 figure 函数创建的图窗,将 MenuBar 属性设置为 'figure' 会取消停靠该图窗并从窗口中删除工具条。

    此属性仅影响默认菜单,不影响使用 uimenu 函数创建的菜单。

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

    图窗工具栏显示方式,指定为以下值之一:

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

    • 'figure' - 显示工具栏。

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

    对于使用 figure 函数创建的图窗,将 ToolBar 属性设置为 'figure' 会取消停靠该图窗并从窗口中删除工具条。

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

    交互式图窗停靠,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

    此列表描述每个值的行为。

    • 'on' - MATLAB 在图窗工具条或菜单栏中启用图窗停靠按钮 (如果图窗有停靠按钮)。点击该按钮会将图窗停靠在 MATLAB 桌面中。

    • 'off' - MATLAB 禁用图窗停靠按钮。如果 WindowStyle 设置为 'docked',则不能将 DockControls 属性设置为 'off'

    自 R2025a 起

    图形主题,指定为 "light""dark"GraphicsTheme 对象,并存储为 GraphicsTheme 对象。

    浅色主题外观深色主题外观

    Figure containing a simple app in light theme

    Figure containing a simple app in dark theme

    作为设置 Theme 属性的替代方法,您还可以调用 theme 函数。

    要确定当前主题是浅色主题还是深色主题,请查询 Theme 属性以获取 GraphicsTheme 对象。然后查询 GraphicsTheme 对象的 BaseColorStyle 属性。后一个查询返回值 'light''dark'

    f = figure;
    gtobject = f.Theme;
    figtheme = gtobject.BaseColorStyle

    自 R2025a 起

    图形主题选择方式,指定为以下值之一:

    • "auto" - 使用在 MATLAB 的“设置”窗口中指定的图窗主题。默认情况下,图窗主题设置为 MATLAB Desktop,它将所有图窗的主题设置为与 MATLAB 桌面的主题匹配。

    • "manual" - 使用在 Theme 属性中指定的主题,并且即使 MATLAB 桌面主题更改也不更改它。

    当您显式设置主题时(例如,通过设置 Theme 属性或调用 theme 函数),ThemeMode 属性会自动更改为 "manual"

    位置和大小

    图窗的位置和大小,不包括边框、图窗工具和标题栏,指定为 [left bottom width height] 形式的四元素向量。

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

    元素描述
    left

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

    如果图窗已停靠,则此值相对于其容器。

    bottom

    从主画面下边缘到窗口的内部下边缘的距离。在具有多个监视器的系统上,该值可能为负数。

    如果图窗已停靠,则此值相对于其容器。

    width窗口的左右内部边缘之间的距离。
    height窗口的上下内部边缘之间的距离。

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

    对于停靠在图窗容器中的图窗,设置 Position 属性会取消停靠该图窗并将 WindowStyle 属性设为 'normal'

    要定位包含边框、图窗工具和标题栏的完整窗口,请使用 OuterPosition 属性。

    注意

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

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

    单位值描述
    'pixels'(默认值)

    像素。

    在 Windows 和 Macintosh 系统上,像素的大小为 1/96 英寸。此大小与系统分辨率无关。

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

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

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

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

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

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

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

    注意

    App 设计工具仅支持像素单位。要在 App 设计工具中创建大小相对于其父容器而调整的容器,请使用网格布局管理器或创建具有自动调整布局功能的 App。有关详细信息,请参阅在 App 设计工具中管理可调整大小的 App

    此属性会影响 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

    从主显示画面的左边缘到图窗窗口的外部左边缘的距离。在具有多个监视器的系统上,该值可能为负数。

    如果图窗已停靠,则此值相对于其容器。

    bottom

    从主显示画面的下边缘到图窗窗口的外部下边缘的距离。在具有多个监视器的系统上,该值可能为负数。

    如果图窗已停靠,则此值相对于其容器。

    width窗口的左右外部边缘之间的距离。
    height窗口的上下外部边缘之间的距离。

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

    对于停靠在图窗容器中的图窗,设置 OuterPosition 属性会取消停靠该图窗并将 WindowStyle 属性设为 'normal'

    注意

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

    可调整大小的图窗,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

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

    对于停靠在图窗容器中的图窗,设置 Resize 属性会取消停靠该图窗并将 WindowStyle 属性设为 'normal'

    自动调整子组件的大小,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

    • 'on' - 当容器调整大小时,子组件会自动调整大小。此值是使用 uifigure 函数创建的图窗的默认值。

    • 'off' - 子组件不调整大小。此值是使用 figure 函数创建的图窗的默认值。

    AutoResizeChildren 属性影响容器的直接子组件,而不影响嵌套容器内的子组件。

    AutoResizeChildren'on' 时,某些子组件不会自动调整大小。例如,仅包含非调整大小组件的标签、按钮和容器不会调整大小。

    要自定义调整大小行为,请向容器添加网格布局管理器,或将 AutoResizeChildren 属性设置为 'off' 并为容器创建一个 SizeChangedFcn 回调。有关详细信息,请参阅在 App 设计工具中管理可调整大小的 App

    要禁用 App 的大小调整,请将图窗的 Resize 属性设置为 'off'

    建议仅在以像素为单位进行布局的 App 中将 AutoResizeChildren 指定为 'on'。在不以像素为单位进行布局的 App 中启用自动调整大小可能导致意外行为。

    绘图

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

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

    MATLAB 按行号访问这些颜色。

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

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

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

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

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

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

    仅当图窗可以成为当前图窗时(即,如果图窗的 HandleVisibility 属性是 "on"),此属性才起作用。

    下表介绍每个值的作用。

    属性值效果
    'new'

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

    'add'

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

    'replacechildren'

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

    与使用 clf 命令等效。

    'replace'

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

    与使用 clf reset 命令等效。

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

    打印和导出

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

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

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

    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 个像素。

    打印图窗或将其保存为分页格式(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 属性指定非标准页面大小会将 PaperType 设置为此值。

    鼠标指针

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

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

    'arrow'

    Arrow mouse pointer symbol

    'ibeam'

    I-beam mouse pointer symbol

    'crosshair'

    Crosshair mouse pointer symbol

    'watch'(系统忙)

    Busy system mouse pointer symbol

    'topl''botr'

    Bidirectional arrow mouse pointer symbol that points to the top left and to the bottom right

    'topr''botl'

    Bidirectional arrow mouse pointer symbol that points to the top right and to the bottom left

    'circle'

    Circle mouse pointer symbol

    'cross'

    Cross mouse pointer symbol

    'fleur'

    Mouse pointer symbol with four arrows pointing up, right, down, and left

    'left''right'

    Bidirectional arrow mouse pointer symbol that points to the left and right

    'top' 'bottom'

    Bidirectional arrow mouse pointer symbol that points up and down

    'hand'

    Hand mouse pointer symbol

    自定义指针符号

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

    限制

    Pointer 属性指定的指针符号不会显示在使用 uihtml 函数创建的 HTML UI 组件上。

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

    矩阵中的每个元素分别为指针中的 1 个像素定义亮度级别,其中元素可以具有以下值之一:

    • 1 - 黑色像素。

    • 2 - 白色像素。

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

    矩阵的元素 (1,1) 与指针左上角的像素对应。

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

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

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

    交互性

    可见性状态,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

    • 'on' - 显示对象。

    • 'off' - 隐藏对象而不删除它。您仍然可以访问不可见 UI 组件的属性。

    要使您的 App 更快地启动,请将不需要在启动时出现的所有组件的 Visible 属性设置为 'off'

    更改不可见的容器的大小将在该容器变得可见时触发 SizeChangedFcn 回调。

    更改容器的 Visible 属性不会改变其子组件的 Visible 属性值。即使隐藏容器会导致子组件隐藏也是如此。

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

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

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

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

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

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

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

    当前点,以二元素向量形式返回。该向量包含鼠标指针的 (x, y) 坐标,从图窗左下角开始测量。值采用 Units 属性指定的单位。如果图窗是可滚动的,则坐标从可滚动区域的左下角开始测量。可滚动区域是由滚动条限定的区域。

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

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

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

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

    • 在图窗内转动滚轮。

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

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

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

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

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

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

    对应的操作

    'normal'

    点击鼠标左键。

    'extend'

    以下任一操作:

    • Shift-点击鼠标左键。

    • 点击鼠标中键。

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

    'alt'

    下列任一操作:

    • Control-点击鼠标左键。

    • 点击鼠标右键。

    'open'

    双击任何鼠标按键。

    滚动能力,指定为 'off''on',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

    将此属性设置为 'on' 可以在容器内滚动。但是,还有其他要求:

    • 容器中子组件占用的区域必须大于容器一次可显示的区域。

    • 在容器内无法容纳的组件必须位于容器的上方或右侧。您不能滚动到容器下方或左侧的组件。

    • 如果容器包含网格布局管理器,则容器的 Scrollable 属性不起作用。要启用滚动,请改为将 GridLayout 对象的 Scrollable 属性设置为 'on'

    某些类型的图和坐标区不支持可滚动容器。但是,您可以将图或坐标区放在不可滚动的面板中,然后将该面板放在可滚动的容器中。有关详细信息,请参阅在 App 设计工具中显示图形

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

    常见回调

    自 R2025a 起

    主题更改后执行的回调,指定为下列值之一:

    • 函数句柄。

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

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

    当图窗的主题更改时,将会执行此回调。例如,在所有这些情况下,此回调都会执行:

    • 当您通过调用 theme 函数或设置 Figure 对象的 Theme 属性以编程方式更改主题时

    • 当您使用图窗工具条更改图窗主题时

    • 当您在 MATLAB 设置中应用更改图窗主题的不同主题时

    此回调函数可以访问有关图窗主题更改的特定信息。MATLAB 在 ThemeChangedData 对象中将此信息作为第二个参量传递给回调函数,通常指定为 event。您可以使用圆点表示法查询对象属性。例如,event.ThemeGraphicsTheme 对象形式返回新图窗主题。ThemeChangedData 对象不可用于指定为字符向量的回调函数。

    下表列出了 ThemeChangedData 对象的属性。

    属性
    Theme

    新图窗主题,以 GraphicsTheme 对象形式返回。

    查询 GraphicsTheme 对象的 BaseColorStyle 属性可返回新主题类型("light""dark")。

    themeobj = event.Theme;
    themeval = themeobj.BaseColorStyle;

    PreviousTheme

    先前的图窗主题,以 GraphicsTheme 对象形式返回。

    查询 GraphicsTheme 对象的 BaseColorStyle 属性可返回先前的主题类型("light""dark")。

    themeobj = event.PreviousTheme;
    themeval = themeobj.BaseColorStyle;

    Source执行回调的 Figure 对象
    EventName'ThemeChanged'

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

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

    • 函数句柄。

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

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

    当用户点击图窗的空白区域时,将会执行此回调。

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

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

    对象创建函数,指定为下列值之一:

    • 函数句柄。

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

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

    有关将回调指定为函数句柄、元胞数组或字符向量的详细信息,请参阅App 设计工具中的回调

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

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

    如果将此属性指定为函数句柄或元胞数组,则可以使用回调函数的第一个参量访问正在创建的对象。否则,使用 gcbo 函数访问该对象。

    对象删除函数,指定为下列值之一:

    • 函数句柄。

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

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

    有关将回调指定为函数句柄、元胞数组或字符向量的详细信息,请参阅App 设计工具中的回调

    此属性指定在 MATLAB 删除对象时要执行的回调函数。MATLAB 在销毁对象的属性之前执行 DeleteFcn 回调。如果不指定 DeleteFcn 属性,则 MATLAB 执行默认的删除函数。

    如果将此属性指定为函数句柄或元胞数组,则可以使用回调函数的第一个参量访问要删除的对象。否则,使用 gcbo 函数访问该对象。

    键盘回调

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

    • 函数句柄。

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

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

    当用户按下一个键且图窗具有焦点时,将会执行此回调函数。在接受键盘焦点的 UI 组件(例如编辑字段)上按下一个键时不会执行回调,除非该组件被禁用。您可以通过将 EnableEditable 属性设置为 'off' 来禁用组件。此外,通过将 Enable 属性设置为 'inactive',可以在不灰显的情况下禁用 TableUIControl 组件。

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

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

    属性描述

    示例:

      

    a

    =

    Shift

    Shift-a

    Character

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

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

    'a''=''''A'
    Modifier

    包含按下的修改键名称的元胞数组,如 'control''alt''shift'。如果未按下修改键,则元胞数组为空。

    {1x0 cell}{1x0 cell}{'shift'}{'shift'}
    Key

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

    'a''equal''shift''a'
    Source按下该键时具有焦点的对象。Figure 对象Figure 对象Figure 对象Figure 对象
    EventName导致回调函数执行的操作。'KeyPress''KeyPress''KeyPress''KeyPress'

    有关指定回调属性值和使用回调参量的详细信息,请参阅Specify a Callback Function

    CurrentCharacter 属性还返回字符信息。

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

    • 函数句柄。

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

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

    当用户释放键且图窗或子对象具有焦点时,将会执行此回调函数。在接受键盘焦点的组件(例如编辑字段)上释放一个键时不会执行回调,除非该组件被禁用。您可以通过将 EnableEditable 属性设置为 'off' 来禁用组件。此外,通过将 Enable 属性设置为 'inactive',可以在不灰显的情况下禁用 TableUIControl 组件。

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

    属性描述

    示例:

      

    a

    =

    Shift

    Shift-a

    Character

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

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

    'a''=''''A'
    Modifier

    包含按下的修改键名称的元胞数组,如 'control''alt''shift'。如果未释放修改键,则元胞数组为空。

    {1x0 cell}{1x0 cell}{'shift'}{'shift'}
    Key

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

    'a''equal''shift''a'
    Source释放键时具有焦点的对象。Figure 对象Figure 对象Figure 对象Figure 对象
    EventName导致回调函数执行的操作。'KeyRelease''KeyRelease''KeyRelease''KeyRelease'

    有关指定回调属性值和使用回调参量的详细信息,请参阅Specify a Callback Function

    窗口回调

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

    • 函数句柄。

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

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

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

    MATLAB 在 App 用户尝试关闭 App 时执行此回调。例如,您可以通过编码让回调例程显示一个对话框,要求 App 用户确认或取消关闭操作。

    CloseRequestFcn 回调的默认值 'closereq' 会无条件地删除图窗,从而销毁窗口。

    CloseRequestFcn 回调中考虑调用 delete 函数以关闭 Figure

    • 在 App 设计工具中,调用 delete(app)

    • 对于其他图窗,调用 delete(f),其中 fFigure 对象。

    如果 CloseRequestFcn 回调不包含 delete 命令,则 MATLAB 永远不会关闭窗口。您始终可以调用 delete 函数以强制关闭窗口。

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

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

    function myCloseReq(src,event)
    selection = uiconfirm(src,'Close this figure?',...
        'Confirm Close'); 
    switch selection 
        case 'OK'
            delete(src)
        case 'Cancel'
            return 
    end
    end
    

    现在,创建一个图窗,并为 CloseRequestFcn 指定 myCloseReq。请注意,函数句柄不会显式引用任何输入参量,但函数声明中包含两个输入参量。MATLAB 在回调执行时自动传递这些参量。第一个参量是触发回调的 UI 组件,第二个参量为回调函数提供事件数据。

    uifigure('CloseRequestFcn',@myCloseReq);

    关闭图窗窗口,将出现确认对话框。

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

    • 函数句柄。

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

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

    定义此回调以在图窗大小更改时(例如,当您调整窗口大小时)自定义图窗内容的布局。在回调中,编写代码来调整子组件的 Position 属性。

    注意

    除非图窗的 AutoResizeChildren 属性设置为 'off',否则 SizeChangedFcn 回调不会执行。在 App 设计工具中,您可以通过选择容器并清除组件浏览器的组件选项卡中的 AutoResizeChildren 复选框,使 SizeChangedFcn 可执行。

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

    • 图窗首次变得可见。

    • 图窗在大小改变时可见。

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

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

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

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

    • 要访问通过 SizeChangedFcn 调整大小的图窗,请指向源对象(回调中的第一个输入参量)。

    指定调整大小行为的替代方法是创建 GridLayout 对象或使用 App 设计工具中的自动调整布局选项。这些选项比 SizeChangedFcn 回调更容易使用。然而,与这些选项相比,SizeChangedFcn 回调有一些优势。例如,您可以使用 SizeChangedFcn 回调来实现以下目的:

    • 将组件调整到您定义的最小或最大大小。

    • 实现非线性调整大小行为。

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

    • 函数句柄。

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

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

    当用户点击以下任一位置时,将会执行此回调:

    • 图窗的空白区域

    • 图窗内的 UI 组件

    • 图窗中支持 ButtonDownFcn 属性的图形对象

    • UIAxes 对象

    例如,点击 Axes 对象将触发 WindowButtonDownFcn 回调。

    如果用户点击 Table 组件,回调不会执行,除非表的 Enable 属性设置为 'off''inactive'

    请参阅特定图形对象的属性的列表,以确定它是否支持 ButtonDownFcn 属性。有关图形对象的属性,请参阅图形对象属性

    有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅App 设计工具中的回调Create Callbacks for Apps Created Programmatically

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

    • 函数句柄。

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

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

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

    有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅App 设计工具中的回调Create Callbacks for Apps Created Programmatically

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

    • 函数句柄。

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

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

    当用户在以下任一位置处释放鼠标按键时,将会执行此回调:

    • 图窗的空白区域

    • 图窗内的 UI 组件

    • 图窗中支持 ButtonDownFcn 属性的图形对象

    • UIAxes 对象

    例如,在 axes 对象上释放鼠标按键会触发 WindowButtonUpFcn 回调。

    如果用户在 Table 组件上释放鼠标按键,回调不会执行,除非表的 Enable 属性设置为 'off''inactive'

    请参阅特定图形对象的属性的列表,以确定它是否支持 ButtonDownFcn 属性。有关图形对象的属性,请参阅图形对象属性

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

    有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅App 设计工具中的回调Create Callbacks for Apps Created Programmatically

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

    • 函数句柄。

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

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

    当用户在图窗或子组件具有焦点的情况下按下一个键时,将会执行此回调函数。如果用户几乎在同一时间按下多个键,MATLAB 将检测所有键。

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

    属性描述

    示例:

      

    a

    =

    Shift

    Shift-a

    Character

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

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

    'a''=''''A'
    Modifier

    包含按下的修改键名称的元胞数组,如 'control''alt''shift'。如果未按下修改键,则元胞数组为空。

    {1x0 cell}{1x0 cell}{'shift'}{'shift'}
    Key

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

    'a''equal''shift''a'
    Source按下该键时具有焦点的对象。Figure 对象Figure 对象Figure 对象Figure 对象
    EventName导致回调函数执行的操作。'WindowKeyPress''WindowKeyPress''WindowKeyPress''WindowKeyPress'

    有关指定回调属性值和使用回调参量的详细信息,请参阅App 设计工具中的回调Create Callbacks for Apps Created Programmatically

    CurrentCharacter 属性还返回字符信息。

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

    • 函数句柄。

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

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

    当用户在图窗或子组件具有焦点的情况下释放一个键时,将会执行此回调函数。

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

    属性描述

    示例:

      

    a

    =

    Shift

    Shift-a

    Character

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

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

    'a''=''''A'
    Modifier

    包含按下的修改键名称的元胞数组,如 'control''alt''shift'。如果未释放修改键,则元胞数组为空。

    {1x0 cell}{1x0 cell}{'shift'}{'shift'}
    Key

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

    'a''equal''shift''a'
    Source释放键时具有焦点的对象。Figure 对象Figure 对象Figure 对象Figure 对象
    EventName导致回调函数执行的操作。'WindowKeyRelease''WindowKeyRelease''WindowKeyRelease''WindowKeyRelease'

    有关指定回调属性值和使用回调参量的详细信息,请参阅App 设计工具中的回调Create Callbacks for Apps Created Programmatically

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

    • 函数句柄。

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

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

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

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

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

    属性

    内容

    VerticalScrollCount

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

    VerticalScrollAmount

    常量值 3

    Source

    执行回调的对象。

    EventName'WindowScrollWheel'.

    有关指定回调属性值和使用回调参量的详细信息,请参阅App 设计工具中的回调Create Callbacks for Apps Created Programmatically

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

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

    function scroll_wheel
    % Shows how to use WindowScrollWheelFcn property
    %
       f = uifigure('WindowScrollWheelFcn',@figScroll,'Name','Scroll Wheel Demo');
       x = 0:.1:40;
       y = 4.*cos(x)./(x+2);
       a = axes(f); 
       h = plot(a,x,y);
       title(a,'Rotate the scroll wheel')
    
       function figScroll(~,event)
          if event.VerticalScrollCount > 0 
             xd = h.XData;
             inc = xd(end)/20;
             x = [0:.1:xd(end)+inc];
             re_eval(x)
          elseif event.VerticalScrollCount < 0 
             xd = h.XData;
             inc = xd(end)/20;
             % Don't let xd = 0
             x = [0:.1:xd(end)-inc+.1]; 
             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)];
          drawnow
       end
    end

    请注意,figScroll 的函数句柄不会显式引用任何输入参量,但函数声明中包含两个输入参量。MATLAB 在回调执行时自动传递这些参量。第一个参量是触发回调的 UI 组件,第二个参量为回调函数提供事件数据。

    回调执行控件

    回调中断,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

    此属性确定是否可以中断运行中回调。有以下两种回调状态要考虑:

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

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

    每次执行处理回调队列的命令时,MATLAB 都会确定回调中断行为。这些命令包括 drawnowfigureuifiguregetframewaitforpause

    如果运行中回调不包含上述命令之一,则不会发生中断。MATLAB 首先完成执行运行中回调,然后执行中断回调。

    如果运行中回调确实包含上述命令之一,则由运行中回调所属对象的 Interruptible 属性来确定是否发生中断:

    • 如果 Interruptible 的值为 'off',则不会发生中断。此时,由中断回调所属对象的 BusyAction 属性确定中断回调是被丢弃还是添加到回调队列中。

    • 如果 Interruptible 的值为 'on',则发生中断。下次 MATLAB 处理回调队列时,它会停止运行中回调的执行,并执行中断回调。在中断回调完成后,MATLAB 将继续执行运行中回调。

    注意

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

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

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

    • 如果中断回调由 Timer 对象所有,则回调将根据调度执行,而不考虑 Interruptible 属性值。

    注意

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

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

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

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

    BusyAction 属性仅在同时满足以下两个条件时才确定回调排队行为:

    在这些情况下,由中断回调所属对象的 BusyAction 属性确定 MATLAB 如何处理中断回调。以下是 BusyAction 属性的可能值:

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

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

    是否能够成为当前对象,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

    • 'on' - 当用户点击图窗时,将当前对象设置为 Figure 对象。Figuregco 函数的 CurrentObject 属性都返回 Figure 作为当前对象。

    • 'off' - 当用户点击图窗时,当前对象不会更新。

    此 属性 为只读。

    删除状态,以 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值形式返回。

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

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

    父级/子级

    此 属性 为只读。

    父对象,以根对象形式返回。

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

    不能使用 Children 属性添加或删除子对象。使用该属性查看子级列表或对子级重新排序。子级在该数组中的顺序反映了对象在屏幕上的前后顺序(堆叠顺序)。

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

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

    图窗对象的可见性,指定为 'off''callback''on'。此属性提供有关 Figure 对象在其父级的子级列表中的可见性的信息。

    下表说明设置每个值的作用。

    HandleVisibility描述
    'off'

    此值是使用 uifigure 函数创建的图窗的默认值。

    Figure 对象对于回调函数或在命令行窗口中执行的函数不可见。此外,该对象:

    • 在图形根 ChildrenCurrentFigure 属性返回的列表中不可见。

    • 不会由通过搜索对象层次结构或查询对象属性来访问对象的函数返回。这些函数包括 gcfgcogetfindobjclfclose

    此选项防止回调函数和从命令行调用的函数以对象为目标,并对 UI 进行无意中的更改。

    'callback'

    Figure 对象仅在回调或回调所调用的函数中可见,在从命令行窗口调用的函数中不可见。此外,对象在图形根 ChildrenCurrentFigure 属性返回的列表中不可见。

    此选项阻止通过命令行访问对象,但允许回调函数访问对象。

    'on'

    此值是使用 figure 函数创建的图窗的默认值。

    Figure 对象始终可见。

    即使对象的 HandleVisibility 属性设置为 'off',这些对象仍然有效。如果可以访问某个对象,则可以设置和获取其属性,并将其传递给针对对象进行操作的任意函数。

    标识符

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

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

    在以编程方式使用 uifigure 函数创建的图窗中,默认名称是 ''

    在 App 设计工具中,默认名称是 'MATLAB App'

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

    图标源或文件,指定为字符向量、字符串标量或 m×n×3 真彩色图像数组。如果指定文件名,它可以是 MATLAB 路径中的图像文件名或图像文件的完整路径。如果您计划与他人共享某个 App,请将图像文件放在 MATLAB 路径中以便于打包 App。

    支持的图像格式包括 JPEG、PNG、GIF 和 m×n×3 真彩色图像数组。有关真彩色图像数组的详细信息,请参阅在 MATLAB 中使用图像类型。动画 GIF 文件只显示第一帧。

    如果没有足够的空间显示完整大小的图标,MATLAB 会缩小图像以适应空间。

    示例: "icon.png" 指定 MATLAB 路径中的图标文件。

    示例: "C:\Documents\icon.png" 指定图像文件的完整路径。

    示例: fig = uifigure("Icon","peppers.png") 使用指定的图标图像文件创建一个 UI 图窗。

    此 属性 为只读。

    图窗的编号,以整数或空数组形式返回。

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

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

    带编号的标题,指定为 'off''on',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

    NumberTitleIntegerHandle 属性都设置为 'on' 时,图窗的标题包括短语 'Figure n',其中 n 是数字。

    使用整数句柄,指定为 'off''on',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

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

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

    要显示标题栏中的数字,IntegerHandleNumberTitle 都必须设置为 'on'

    用于保存图窗的文件名,指定为字符向量或字符串标量。使用 GUIDE 创建的 App 使用此属性来存储与该 App 关联的 UI 布局文件的名称。

    此 属性 为只读。

    图形对象的类型,以 'figure' 形式返回。

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

    用户数据,指定为任何 MATLAB 数组。例如,您可以指定标量、向量、矩阵、元胞数组、字符数组、表或结构体。使用此属性存储对象上的任意数据。

    如果您在 App 设计工具中工作,请在该 App 中创建公共或私有属性以共享数据,而不是使用 UserData 属性。有关详细信息,请参阅在用 App 设计工具创建的 App 内共享数据

    对象函数

    scroll滚动到 UI 组件内的位置
    focusGive focus to UI component

    示例

    全部折叠

    创建默认 UI 图窗。

    fig = uifigure;

    Blank UI figure window.

    获取该图窗的位置、宽度和高度。

    fig.Position
    ans =
    
       681   559   560   420

    这意味着图窗窗口位于主显示画面左下角的右侧 681 像素和上方 559 像素处,宽 560 像素,高 420 像素。

    通过调整位置向量的第三个和第四个元素,将图窗宽度和高度减半。

    fig.Position(3:4) = [280 210];

    Blank UI figure window. The window is half as tall as half as wide as the default window.

    详细信息

    全部展开

    版本历史记录

    在 R2006a 之前推出

    全部展开