时间:2021-07-01 10:21:17 帮助过:42人阅读
一 概述 其实MATLAB的GUI完全可以使用MATLAB中各种控件的函数来实现,也可以说GUI就是一个figure,本人也是对MATLAB GUI比较感兴趣的一个学习者,在学习MATLAB过程中,搜索了不少资料才了解了用函数形式也就是不依靠GUIDE完成GUI设计的方法,在这里总结分享
一 概述
其实MATLAB的GUI完全可以使用MATLAB中各种控件的函数来实现,也可以说GUI就是一个figure,本人也是对MATLAB GUI比较感兴趣的一个学习者,在学习MATLAB过程中,搜索了不少资料才了解了用函数形式也就是不依靠GUIDE完成GUI设计的方法,在这里总结分享,若有错误,还望网友指出。
MATLAB GUI,2这一部分的内容以函数的形式实现一个简单的跳绳的小游戏,包括一个简单的开始界面,和死亡界面,非常简单,而且不涉及任何有难度的算法,仅仅是作为对MATLAB GUI的函数实现这一形式的参考,而这一篇为第一部分,主要介绍将要用到的一些控件。
二 图像(figure)
图像就不多说了,主要介绍下图像的句柄。
figure_handler = figure; %多嘴一句,尽量在有返回值的语句后面加分号,会提高运行速度
上面一行代码是建立一个默认图像,并将图像的句柄返回至handler中,那么我们想对建立figure进行任何操作,只需要改变handler的属性值即可。
在建立figure的时候,就可以改变figure的属性值,例如,
figure_handler = figure('name', 'test', 'numbertitle', 'off');
通过上面语句建立的图像,关闭了数字标题,并把图像名设置为test,那么新建的图像在标题栏就只会显示test了。
本文所需figure属性如下
WindowKeyPressFcn :图像窗口键盘按下回调函数,当图像窗口被设置为当前窗口时,按下键盘上的键时调用该函数
name :图像名,也是窗口名,值为字符串
units :图像中位置等信息的衡量单位,常用值为'normalized'(归一化值)以及'pixel'(像素)
position :按钮在图像中的位置,4维向量,[左起始点,下起始点,宽度,高度]
numbertitle :显示在窗口栏的数字标题,这里没用,设置为'off'或'on'
resize :标识窗口是否能被用户重新定义大小,设置为'off'或'on'
menubar :图像的菜单栏,可以是菜单栏句柄,也可以为'none'或'fiure','none'表示无菜单栏,'figure'为默认绘图窗口的菜单栏
toolbar :图像的工具栏,可以是工具栏句柄,也可以为'none'或'fiure','none'表示无工具栏,'figure'为默认绘图窗口的工具栏
三 set和get函数
如果要使用好MATLAB GUI,那么set和get函数是最基本的。set函数的作用是设置句柄的属性值,原型如下
set(figure_handler, 'property1', value1, 'property2', value2)
而get函数的作用是获取句柄的属性值,原型如下
value = ge(figure_handler, 'property');
那么,如果想要改变前面建立的图像的鼠标,那么只需要执行如下语句即可
set(figure_handler, 'pointer', 'cross');
现在,把鼠标移动到刚刚建立的图像上,观察下鼠标,你会发现不同的。如果想知道更多种类,在帮助文档中查找 figure properties。
关于set和get以及figure的属性,更多可以参考下 http://blog.csdn.net/szv123_rier/article/details/8157218
四 在图像上建立按钮
我们要使用的是按钮pushbutton,通过按钮来完成一些交互。按钮通过函数uicontrol来建立,调用方式如下。
button_handler = uicontrol(figure_handler, 'style', 'pushbutton');
fiugre_handler作为按钮的父句柄,那么这个按钮的句柄是图像的子句柄。'style'定义风格,这里是'pushbutton'。建立时可以同时定义其他属性,本文用到的按钮的属性值如下,
units :图像中位置等信息的衡量单位,常用值为'normalized'(归一化值)以及'pixel'(像素)
position :按钮在图像中的位置,4维向量,[左起始点,下起始点,宽度,高度]
string :显示在按钮上的字符串
fontsize :有字符当然有字体大小了
callback :回调函数,当按钮被按下时执行的函数
五 坐标轴(axes)
坐标轴是显示图像的控件,MATLAB的plot函数在axes上完成,也就是说整个小游戏都是绘制在这里的。
建立方式如下,
axes_handler = axes;
同样,也可以在建立时,改变其他属性。本文需要的属性值如下,
units, position :同上
ylim :2维向量,[Y轴最小值,Y轴最大值],标记坐标轴中Y轴显示范围。
xlim :同ylim,只是这是关于X轴的。
tickdir :tick是坐标轴中的标记指针,就是在轴上的刻度线,tickdir设置为刻度线的方向,'out',’in' 可选,表示指向坐标轴内或外
六 小结
简单介绍了下图像、按钮和坐标轴的建立以及一些属性,以及操作属性的set和get函数。结束前完成一个简单的例子作为巩固吧。
fh = figure('name','part1demo', ... 设置图像名
'unit','pixel', ... 设置单位,与按钮一样,这里设置为像素,好调整位置
'position',[240,70,800,600], ... 假设电脑是1280X768的分辨率,那么我设置一个800X600的图像,尽量在屏幕中央
'numbertitle','off', ... 关闭figure的数字标题
'resize','off', ... 不支持窗口大小的变换
'menubar','none', ... 取消默认菜单栏
'toolbar','none' ... 取消默认工具栏
);
ah = axes('units','normalized', ... 设置单位,设置为归一化,
'position',[0,0,1,1], ... 铺满整个窗口
'tickdir','out', ... 设置坐标轴标记的方向为向外,这样在坐标轴上就不会看到了
'xlim',[1,800], ... 设置x轴范围为1到800
'ylim',[1,600] ... 设置y轴范围为1到600
);
bh = uicontrol(fh, ... 父句柄为刚刚建立的图像句柄
'style','pushbutton', ... 风格为按钮
'string','绘制一个正弦波 - -', ... 设置按钮文字
'fontsize',40, ... 设置字体大小
'units','normalized', ... 设置单位为归一化
'position',[0,0,1,0.2], ... 设置按钮在窗口下方
'callback','plot(sin(1:800))' ... 设置按钮的回调函数,在坐标轴中绘制正弦波
);
oops,例子里忘了添加set和get了,不过没事,建立完成后若想改变其属性,使用set就好了,就不多写了。
来张截图,点击按钮前
点击按钮后