MATLAB中uifigure函数用法

目录

语法

说明

示例

创建默认的 UI 图窗

设置和访问属性

更改图窗大小

创建模态 UI 图窗

编写 CloseRequestFcn 以确认关闭 UI 图窗

更改鼠标指针符号


        uifigure函数的功能是创建用于设计 App 的图窗。

语法

fig = uifigure
fig = uifigure(Name,Value)

说明

        fig = uifigure 创建一个用于构建用户界面的图窗并返回 Figure 对象。这是 App 设计工具使用的图窗类型。

        fig = uifigure(Name,Value) 使用一个或多个 Name,Value 对组参数指定图窗属性。

示例

创建默认的 UI 图窗

fig = uifigure;

如图所示:

设置和访问属性

        创建具有特定标题的 UI 图窗。

fig = uifigure('Name','Plotted Results');

如图所示:

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

p = fig.Position
ans =

   680   678   560   420

更改图窗大小

        创建默认 UI 图窗。

fig = uifigure;

如图所示:

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

fig.Position
ans =

   681   559   560   420

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

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

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

如图所示:

创建模态 UI 图窗

        创建两个 UI 图窗窗口。通过将图窗 2 的 WindowStyle 属性值指定为 'modal' 来阻止图窗 1 中的交互。请注意,在图窗 2 关闭之前,您无法与图窗 1 交互。

fig1 = uifigure('Name','Figure 1');
fig1.Position = [500 500 370 270];

fig2 = uifigure('Name','Figure 2');
fig2.Position = [540 450 370 270];
fig2.WindowStyle = 'modal';

如图所示:

编写 CloseRequestFcn 以确认关闭 UI 图窗

        编写 CloseRequestFcn 回调,以便在用户试图关闭窗口时打开模态“确认”对话框。请将以下代码复制并粘贴到 MATLAB® 编辑器中,然后运行 closeFig。

function closeFig
fig = uifigure('Position',[100 100 425 275]);
fig.CloseRequestFcn = @(src,event)my_closereq(src);

    function my_closereq(fig)
        selection = uiconfirm(fig,'Close the figure window?',...
            'Confirmation');
        
        switch selection
            case 'OK'
                delete(fig)
            case 'Cancel'
                return
        end
    end

end

点击图窗中的关闭按钮。“确认”对话框随即打开。

如图所示:

更改鼠标指针符号

        更改将鼠标悬停在普通按钮上时显示的鼠标指针符号。此程序文件名为 setMousePointer.m,它说明如何:

  • 创建一个 UI 图窗,该图窗在鼠标移至按钮上时执行自定义代码。为此,使用 @ 运算符将 mouseMoved 函数句柄赋给该图窗的 WindowButtonMotionFcn 属性。

  • 创建一个普通按钮,并指定其坐标和标签。

  • 创建一个名为 mouseMoved 的回调函数,其中包含当鼠标移到该按钮上时要执行的自定义代码。在函数中,查询 CurrentPoint 属性以确定鼠标指针坐标。如果指针坐标在普通按钮坐标内,则将 Pointer 属性设置为 'hand'。

运行 setMousePointer。然后将鼠标移到该普通按钮上,以查看鼠标指针符号从箭头变为手形。

function setMousePointer
fig = uifigure('Position',[500 500 375 275]);
fig.WindowButtonMotionFcn = @mouseMoved;

btn = uibutton(fig);
btnX = 50;
btnY = 50;
btnWidth = 100;
btnHeight = 22;
btn.Position = [btnX btnY btnWidth btnHeight];
btn.Text = 'Submit Changes';

    function mouseMoved(src,event)
        mousePos = fig.CurrentPoint;
        if (mousePos(1) >= btnX) && (mousePos(1) <= btnX + btnWidth) ...
                && (mousePos(2) >= btnY) && (mousePos(2) <= btnY + btnHeight)
              fig.Pointer = 'hand';
        else
              fig.Pointer = 'arrow';
        end
    end
end

如图所示:

### MATLAB 中 `matlab.ui.Figure` 类型的使用方法与错误处理 #### 1. MATLAB 图形窗口 (`Figure`) 的基本概念 在 MATLAB 中,`matlab.ui.Figure` 是用于表示图形窗口的对象类型。它支持多种属性设置,允许用户自定义窗口的行为和外观。例如,可以调整窗口大小、位置、标题以及编号等特性。 当尝试修改 `Figure` 对象的某些属性时,可能会遇到特定类型的错误提示。例如,在设置 `Number` 属性时,如果输入值不符合预期的数据类型,则会触发如下错误消息:“MATLAB 错误使用 figure 设置 Figure 的 ‘Number’ 属性时: 值必须是双精度标量或空矩阵。” 这一问题的具体原因在于 `Number` 属性仅接受双精度浮点数或者为空矩阵作为合法赋值[^2]。 #### 2. 正确配置 `Figure` 属性的方法 为了防止上述错误发生并确保能够正常操作 `Figure` 对象,应当遵循以下原则: - **验证数据类型**: 在设定任何数值类别的参数之前,请确认所使用的变量确实满足目标属性的要求。对于像 `Number` 这样的字段来说,应该保证传入的是有效的 double 数据形式或者是默认状态下的空白数组 []。 ```matlab % 创建一个新的 figure 并正确指定 Number 属性 fig = figure('Number', 1); % 合法的 double 类型 ``` - **利用动态更新机制**: 如果希望实时更改现有 figure 实例的相关选项而无需重新初始化整个对象的话,那么可以直接访问该实例句柄来进行局部修正工作。 ```matlab set(fig, 'Position', [100, 100, 800, 600]); % 修改窗口的位置和尺寸 title('My Custom Title'); % 添加标题 ``` 以上代码片段展示了如何安全有效地操控已存在的 figure 句柄上的多个常用属性,从而避免因不当调用引发异常情况的发生概率大大降低。 #### 3. 利用 App Designer 构建 GUI 应用中的注意事项 除了单独管理独立 figures 外,在构建复杂的 GUI 应用程序时也经常需要用到类似的逻辑控制流程。借助于现代版本里的 App Designer 工具箱功能模块化开发模式下更加便捷高效完成此类任务需求[^3]。 需要注意的一点是在编写回调函数期间务必小心谨慎对待每一个可能影响到 UI 组件行为的动作指令序列安排合理顺序关系才能达到最佳用户体验效果同时减少潜在风险隐患的存在可能性。 --- ### 总结 综上所述,针对 `matlab.ui.Figure` 类型的操作需特别留意其各属性对应的数据格式要求;一旦发现不匹配情形即刻按照标准指南予以纠正即可有效规避大部分常规性失误现象出现几率显著下降。另外结合实际项目场景灵活运用高级框架如 AppDesigner 提供的支持服务有助于进一步简化整体架构复杂度提升维护便利程度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值