pdf版本笔记的下载地址: Matlab GUI学习01_图形对象及其操作(访问密码:3834)
Matlab GUI学习01: 图形对象及其操作
图形对象的基本概念及操作
图形句柄及其操作
- 什么是对象句柄
MATLAB中的每个对象都对应一个唯一不重复的句柄值,通过句柄值来找到和修改这个对象 - 如何找到所有句柄
使用allchild(gcf)
函数查看所有句柄 - 句柄的常用操作
get(Handle, 'PropertyName')
: 查找Handle
对象的PropertyName
属性;若不定义'PropertyName'
参数,则返回对象的所有属性.set(H, 'PropertyName', PropertyValue)
: 将Handle
对象的PropertyName
属性设置为PropertyValue
.allchild(HandleList)
: 查看HandleList
每一个句柄的所有子元素.findobj(ObjectHandles, 'P1Name', P1Value,...)
: 查找ObjectHandles
中P1Name
为P1Value
的对象.
对象操作实例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对象: 图形窗口
其主要属性如下:
-
CloseRequestFunction=closereq;
: 默认的关闭窗体的函数.例子:
hb = uicontrol('Style', 'pushbutton', 'Callback', 'closereq');
-
Color
: 窗体颜色. -
CurrentAxes
: 窗口中的坐标轴对象. -
CurrentObjects
: 窗口中的对象. -
Menubar
: 工具条,一般设为'none'
,表示不显示坐标轴. -
Name
: 窗口名字. -
NumberTitle
: 标题是否显示图片编号,选项为on或off.例子:
set(hf, 'NumberTitle', 'off', 'Name', '窗口名字');
-
NextPlot
:'add'
或'replace'
, 下一次画图指令绘制在原窗口还是新窗口 -
Position
: 窗口位置,其格式为[左下角x坐标, 左下角y坐标, 宽度, 长度]
-
Units
: 窗口尺寸单位,默认为'pixels'
,表示窗口尺寸单位为像素; 一般设为'Normalized'
,表示窗口尺度单位为百分比.一般和
Posiiton
属性结合设置窗口位置 -
Resize
:是否可以改变大小,值为'on'
或'off'
. -
各种回调函数:
WindowButtonDownFcn
: 鼠标按下回调函数WindowButtonUpFcn
: 鼠标按下回调函数WindowKeyPressFcn
: 键盘按下回调函数WindowKeyReleaseFcn
: 键盘按下回调函数WindowScrollWheelFcn
: 键盘按下回调函数
-
WindowStyle
: 窗体风格,默认为'normal'
.可以选择'modal'
使图形突出显示,点击图形外无效果. -
Visible
: 窗口是否可见,值为'on'
或'off'
,用于父窗口调用子窗口
axes对象: 坐标轴
其特有属性如下:
-
Box
: 坐标轴四周是否有边框,值为'on'
或'off'
-
GridLineStyle
: 网格线形 -
坐标轴
XLim
,YLim
: 坐标轴取值范围.XAxisLocation
: x坐标轴位置,值为'bottom'
或'top'
XGrid
,YGrid
,ZGrid
: 是否显示坐标轴,值为'on'
或'off'
line对象: 线
其特有属性如下:
-
Color
: 线颜色 -
LineStyle
: 线形 -
LineWidth
: 线宽 -
Marker
: 图上关键点的标记 -
关键点标记的颜色
MarkerEdgeColor
: 边缘颜色MarkerFaceColor
: 内部颜色
-
XData
,YData
,ZData
:line
对象核心属性: 线上点的内容
例子:hl = ezplot('sin(x)') get(hl1, 'XData'); % 得到x与y坐标轴的位置 get(hl1, 'YData');
text对象: 文字
- 颜色:
BackgroundColor
: 文字背景颜色,用一个三位向量表示rgb值 或 字符串
Color
: 文字颜色,格式与BackgroundColor
相同 Editing
: 允许编辑,值为'on'
或'off'
- 字体:
FontAngle = normal
FontName = Helvetica
FontSize = [10]
FontUnits = points
FontWeight = normal
- 对齐方式
HorizontalAlignment = left
水平对齐VerticalAlignment = middle
垂直对齐
String
: 字符串内容Interpreter = tex
: 解释器,可选'tex'
或'latex'
uicontrol对象: 一般对象
uicontrol
包含很多类对象,用Style
属性来区分. 一般用guide来修改
其最重要的属性为Callback
属性,表示其回调函数.其Callback语句写法:
- 将原始语句写出来
- 在原始对象两边加上单引号
- 当原本字符串中含有引号时,将原始单引号改为两个单引号,然后再最外层加上一对单引号
例如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对话框: 输入对话框
-
普通
inputdlg
name = inputdlg('请输入姓名', '实例')
-
多输入的
inputdlg
[name, gender] = inputdlg({'请输入姓名', '请输入性别'}, '实例')
-
设定默认值
[name, gender] = inputdlg({'请输入姓名', '请输入性别'}, '实例', 1, {'陈海', '男'})
提示对话框
dialog
: 普通对话框
errordlg
: 错误对话框
warndlg
: 警告对话框
dialog('name' ,'标题'); % 内容可以通过设置子text对象定义
errordlg('error内容', '标题');
warndlg('warning内容', '标题');
pdf版本笔记的下载地址: Matlab GUI学习01_图形对象及其操作(访问密码:3834)