您的位置:首页 > 编程语言 > MATLAB

MATLAB GUI ,2,使用MATLAB的函数来实现MATLAB GUI,part 1,图像、按钮和坐标轴

2014-02-02 11:41 801 查看
一  概述

    其实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 控件