Matlab GUI学习01:图形对象及其操作

本文围绕Matlab GUI展开,介绍图形对象的基本概念及操作,包括图形句柄及其操作,还有定时改变图形颜色、按钮控制画图等实例。阐述常用对象如Figure、axes、line、text、uicontrol的属性,还列举了多种常用对话框,如文件打开、保存、颜色选择等对话框的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pdf版本笔记的下载地址: Matlab GUI学习01_图形对象及其操作(访问密码:3834)

图形对象的基本概念及操作

图形句柄及其操作

  1. 什么是对象句柄
    MATLAB中的每个对象都对应一个唯一不重复的句柄值,通过句柄值来找到和修改这个对象
  2. 如何找到所有句柄
    使用allchild(gcf)函数查看所有句柄
  3. 句柄的常用操作
    1. get(Handle, 'PropertyName'): 查找Handle对象的PropertyName属性;若不定义'PropertyName'参数,则返回对象的所有属性.
    2. set(H, 'PropertyName', PropertyValue): 将Handle对象的PropertyName属性设置为PropertyValue.
    3. allchild(HandleList): 查看HandleList每一个句柄的所有子元素.
    4. findobj(ObjectHandles, 'P1Name', P1Value,...): 查找ObjectHandlesP1NameP1Value的对象.

对象操作实例1: 定时改变图形颜色

通过设定对象的Parent属性来指定对象的包含关系.

% 创建图形窗口对象
hf= figure(...
    'Units', 'Normalized', ...			% 规定尺度单位为百分比,默认为pixels
    'Position', [0.2 0.2 0.5 0.5], ...	% 规定图形出现位置
    'Menubar', 'none');					% 不显示系统默认菜单栏


% 创建坐标系
ha = axes(...
    'Parent', hf, ...					% 规定父对象为h
    'Units', 'Normalized', ...			% 规定尺度单位为百分比
    'Position', [0.1 0.1 0.8 0.8]);		% 规定图形出现位置


% 创建曲线对象
hl = line(...
    'Parent', ha, ...					% 规定父对象为ha
    'XData', [0: 0.01: 6], ...			% 规定x坐标
    'YData', sin([0: 0.01: 6]), ...  	% 规定y坐标
    'Color', 'r');          			% 规定x坐标


% 循环,每一秒改变依次颜色
cstring = 'gbkmy';
for k = 1:length(cstring)
    set(hl, 'Color', cstring(k));
    pause(1);          % 设定等待一秒
end

得到结果如下:
在这里插入图片描述

对象操作实例2: 通过按钮控制画图

% 窗口对象
hf = figure(...
    'Units', 'Normalized', ...   
    'Menubar', 'none', ...
    'Color', 'w', ...
    'Position', [0.1 0.1 0.7 0.5]);

% 坐标轴对象
ha = axes(...
    'Parent', hf, ...
    'Units', 'Normalized', ...   
    'Position', [0.1 0.1 0.6 0.8], ...
    'NextPlot', 'Add', ... 	% 指定新的画图命令是开新图还是在原图上叠加,默认为replace; hold on 本质上就是改变这个属性
    'Box', 'on');   		% 指定坐标轴四周边框

% 清空坐标轴按钮
hb1 = uicontrol(...
    'Parent', hf, ...
    'Style', 'pushbutton', ...
    'Callback', 'try, delete(allchild(ha));end', ...	% 回调函数
    'String', 'Clear', ...
    'Units', 'Normalized', ...
    'Position', [0.8 0.2 0.15 0.15]);

% 绘制sin函数按钮
hb2 = uicontrol(...
    'Parent', hf, ...
    'Style', 'pushbutton', ...
    'Callback', 'plot([0: 0.01: 10], sin([0: 0.01: 10]))', ...	% 回调函数
    'String', 'Sin', ...
    'Units', 'Normalized', ...
    'Position', [0.8 0.4 0.15 0.15]);

% 绘制cos函数按钮
hb3 = uicontrol(...
    'Parent', hf, ...
    'Style', 'pushbutton', ...
    'Callback', 'plot([0: 0.01: 10], cos([0: 0.01: 10]))', ...	% 回调函数
    'String', 'Cos', ...
    'Units', 'Normalized', ...
    'Position', [0.8 0.6 0.15 0.15]);

在这里插入图片描述

常用对象及其属性

在这里插入图片描述
常用对象属性的官方文档

Figure对象: 图形窗口

其主要属性如下:

  1. CloseRequestFunction=closereq;: 默认的关闭窗体的函数.

    例子: hb = uicontrol('Style', 'pushbutton', 'Callback', 'closereq');

  2. Color: 窗体颜色.

  3. CurrentAxes: 窗口中的坐标轴对象.

  4. CurrentObjects: 窗口中的对象.

  5. Menubar: 工具条,一般设为'none',表示不显示坐标轴.在这里插入图片描述

  6. Name: 窗口名字.

  7. NumberTitle: 标题是否显示图片编号,选项为on或off.

    例子: set(hf, 'NumberTitle', 'off', 'Name', '窗口名字');
    在这里插入图片描述

  8. NextPlot: 'add''replace', 下一次画图指令绘制在原窗口还是新窗口

  9. Position: 窗口位置,其格式为[左下角x坐标, 左下角y坐标, 宽度, 长度]

  10. Units: 窗口尺寸单位,默认为'pixels',表示窗口尺寸单位为像素; 一般设为'Normalized',表示窗口尺度单位为百分比.

    一般和Posiiton属性结合设置窗口位置

  11. Resize:是否可以改变大小,值为'on''off'.

  12. 各种回调函数:

    • WindowButtonDownFcn: 鼠标按下回调函数
    • WindowButtonUpFcn: 鼠标按下回调函数
    • WindowKeyPressFcn: 键盘按下回调函数
    • WindowKeyReleaseFcn: 键盘按下回调函数
    • WindowScrollWheelFcn: 键盘按下回调函数
  13. WindowStyle: 窗体风格,默认为'normal'.可以选择'modal'使图形突出显示,点击图形外无效果.

  14. Visible: 窗口是否可见,值为'on''off',用于父窗口调用子窗口

axes对象: 坐标轴

其特有属性如下:

  1. Box: 坐标轴四周是否有边框,值为'on''off'
    在这里插入图片描述

  2. GridLineStyle: 网格线形

  3. 坐标轴

    XLim, YLim: 坐标轴取值范围.

    XAxisLocation: x坐标轴位置,值为'bottom''top'
    在这里插入图片描述

    XGrid, YGrid, ZGrid: 是否显示坐标轴,值为'on''off'

line对象: 线

其特有属性如下:

  1. Color: 线颜色

  2. LineStyle: 线形

  3. LineWidth: 线宽

  4. Marker: 图上关键点的标记

  5. 关键点标记的颜色

    • MarkerEdgeColor: 边缘颜色
    • MarkerFaceColor: 内部颜色
  6. XData, YData, ZData: line对象核心属性: 线上点的内容
    例子:

    hl = ezplot('sin(x)')	
    get(hl1, 'XData');			% 得到x与y坐标轴的位置
    get(hl1, 'YData');
    

text对象: 文字

  1. 颜色:
    BackgroundColor: 文字背景颜色,用一个三位向量表示rgb值 或 字符串
    Color: 文字颜色,格式与BackgroundColor相同
  2. Editing: 允许编辑,值为'on''off'
  3. 字体:
    • FontAngle = normal
    • FontName = Helvetica
    • FontSize = [10]
    • FontUnits = points
    • FontWeight = normal
  4. 对齐方式
    • HorizontalAlignment = left 水平对齐
    • VerticalAlignment = middle 垂直对齐
  5. String: 字符串内容
  6. Interpreter = tex: 解释器,可选'tex''latex'

uicontrol对象: 一般对象

uicontrol包含很多类对象,用Style属性来区分. 一般用guide来修改

其最重要的属性为Callback属性,表示其回调函数.其Callback语句写法:

  1. 将原始语句写出来
  2. 在原始对象两边加上单引号
  3. 当原本字符串中含有引号时,将原始单引号改为两个单引号,然后再最外层加上一对单引号

例如plot(x, y, 'r') -> 'plot(x, y, ''r'')'

常用对话框

uigetfile对话框: 文件打开对话框

  • 语句格式:

    uigetfile('FilterSpec')
    uigetfile('FilterSpec','DialogTitle')
    uigetfile('FilterSpec','DialogTitle','DefaultName')
    [FileName, PathName] = uigetfile(...)
    [FileName, PathName, FilterIndex] = uigetfile(...)
    
  • 输入参数:

    • FilterSpec: 规定文件打开类型

      uigetfile('*.m')					% 只可以打开m文件
      uigetfile({'*.m';'*.mat';'*.*'})	% 可以打开.m, .mat文件
      
    • 'DialogTitle': 对话框名称

    • 'DefaultName': 默认打开文件

  • 输出参数:

    • FileName: 文件名称
    • PathName: 文件路径
    • FilterIndex: 按下的是确定键还是取消键,在设计程序时要根据该参数确定是否继续动作
    [FileName, PathName, FilterIndex] = uigetfile('*.txt');
    if FilterIndex == 1
    	load(fullfile(PathName, FileName));
    end
    

uiputfile对话框: 文件保存对话框

输入输出参数与uigetfile一致.

uigetdir对话框: 目录选择对话框

FileName = uigetdir('DialogTitle','DefaultName')

uisetcolor对话框: 颜色选择对话框

  • 语句格式

    C = uisetcolor 
    C = uisetcolor([R G B])
    C = uisetcolor(Handle)     
    C = uisetcolor(...,'dialogTitle') 
    
  • 输入参数
    [R G B]: 默认颜色
    Handle: 选择的颜色结果为Handle赋值颜色
    'dialogTitle': 对话框标题

  • 例子:

    b = uicontrol('Parent', gcf, ...
    	'String', '颜色设置', ...
    	'Style', 'pushbutton', ...
    	'Callback', 'c=uisetcolor; set(b, ''BackgroundColor'', c)');
    

    在这里插入图片描述

uisetfont对话框: 字体设置对话框

  • 语句格式

    S = uisetfont(Handle, 'dialogTitle')
    
  • 输入参数
    Handle: 选择的字体结果为Handle赋值字体
    'dialogTitle': 对话框标题

  • 例子:

    b = uicontrol('Parent', gcf, ...
    		'String', '颜色设置', ...
    		'Style', 'pushbutton', ...
    		'Callback', 'c=uisetfont(b)');
    

    在这里插入图片描述

waitbar对话框: 进度条

  • 语句格式

    waitbar(X)
    waitbar(X, Handle, 'message')
    
  • 输入参数
    X: 进度条进度
    Handle: 对应进度条的句柄
    'message': 对话框更新的信息

  • 例子:

    h = waitbar(0,'Please wait...');
    for i=1:10
        pause(0.2);
        waitbar(i/10, h, strcat('progress:', num2str(i), '/10'));
    end
    

    在这里插入图片描述

inputdlg对话框: 输入对话框

  1. 普通inputdlg

    name = inputdlg('请输入姓名', '实例')
    

    在这里插入图片描述

  2. 多输入的inputdlg

    [name, gender] = inputdlg({'请输入姓名', '请输入性别'}, '实例')
    

    在这里插入图片描述

  3. 设定默认值

    [name, gender] = inputdlg({'请输入姓名', '请输入性别'}, '实例', 1, {'陈海', '男'})
    

    在这里插入图片描述

提示对话框

dialog: 普通对话框
errordlg: 错误对话框
warndlg: 警告对话框

dialog('name' ,'标题');	% 内容可以通过设置子text对象定义
errordlg('error内容', '标题');
warndlg('warning内容', '标题');

在这里插入图片描述

pdf版本笔记的下载地址: Matlab GUI学习01_图形对象及其操作(访问密码:3834)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值