欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

MATLAB GUI ,2,使用MATLAB的函数来实现MATLAB GUI,part 1,图

程序员文章站 2024-02-06 10:35:46
...

一 概述 其实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就好了,就不多写了。

来张截图,点击按钮前

MATLAB GUI ,2,使用MATLAB的函数来实现MATLAB GUI,part 1,图

点击按钮后

MATLAB GUI ,2,使用MATLAB的函数来实现MATLAB GUI,part 1,图