matlab GUI界面编程总结

Matlab GUI编程总结

代码示例:http://download.csdn.net/detail/nuptboyzhb/4474277

1.    创建及初始化界面(Figure)

SystemFrameHandle=figure(1);%创建一个窗口

clf reset                                    

set(gcf,'name','CSplatform NUPT','numbertitle','off',...

   'unit','normalized','position',[0.02,0.1,0.92,0.82],...

'menubar','none');

说明:第一句是新创建一个窗口,并且记录窗口的句柄。第二句话是清除和重置相关的窗口及图形信息。第三句是设置gcf的属性。属性的格式是:先<属性名>,后紧接着是属性的<值>。其中gcf:Get handle to current figure.也即是获得当前窗口的句柄。窗口的属性很多,具体可以参看matlab帮助文档。http://www.mathworks.cn/help/techdoc/ref/figure_props.html;jsessionid=b1a1b2c452f8eed5976059921483

2.    菜单(uimenu)

menu_file=uimenu(gcf,'Label','File(&F)');        

menu_open_image=uimenu(menu_file,'Label','Open Images(&O)');

说明:上述语句创建了2个菜单项。其中,第二个菜单项是第一个菜单项的子项。因此,我们可以看出,菜单的创建有2中方法:

handle = uimenu('PropertyName',PropertyValue,...)
handle = uimenu(parent,'PropertyName',PropertyValue,...)

uimenu的属性和uicontrol的属性一样,具体看第三节

3.    控件(uicontrol)

控件的创建有如下2中方法

handle =uicontrol('PropertyName',PropertyValue,...)
handle = uicontrol(parent,'PropertyName',PropertyValue)

具体是创建哪个类型的控件,控件的属性等,都有<属性>及其<值>决定。

部分属性解析:

1 ‘BakcgroundColor'(背景颜色)---ColorSpec(特定的颜色).这个属性声明了用来填充uicontrol对象的背景颜色,ColorSpec是一个三元素的RGB 向量或者标准颜色的字符串号,默认的颜色值是和系统相关的,并且可以通过输入命令get(0,'DefaultUuicontrolBackgroundColor')获得。该<值>的格式为[0.10.1 0.1];其中,三个值分别代表红、绿、蓝。值的范围0~1
2 ‘Callback'(返回,回调)----string(字符串)。这个属性声明了当用户触发uicontrol对象(如:在按下一个'pushbutton'或者拖动一个'slider')时候所执行的字符串(一般为函数名),'frame' 和静态的'text'uicontrol类型不发出回调。更确切的说,callback就是设置控件的消息响应处理函数。
3 ‘CData'--m-by-n-by-3array( 矩阵)这个属性是一个在'pushbutton'或'fogglebutton'uicontrol类型上显示的真彩色图像。
4  ‘Enable'---{‘on'}(默认状态)|‘inactive'(静态)|'off'(关)这个属性声明了是否启用这个uicontrol对象,当设置为'on'的时候,在这个uicontrol被选中的时候,执行这个回调字符串,当设置为'off'的时候,这个uicontrol标签字符串就变暗。当设置为'inactive' 的时候,uicontrol没有被变暗,当设置为'off'和'inactive'的时候,不执行这个回调字符串,但是'ButtonDownFcn'属性还是会起作用。
5 ‘Extent'(宽度,长度)---[0 0 width heigth],这个属性是一个只读属性,它返回用来标识这个uicontrol所使用的文本字符串的大小,其格式为标准的直角坐标格式,单位为'Units'属性所声明的单位,这个属性可用于确定装载所期望标签字符串而需要的uicontrol的大小。
6 ‘FontAngle'(字体倾斜度)---{‘normal'}|'italic'(斜体的)|'oblique'(斜的,歪的)这个属性声明了所用的字符的倾斜度。
7 ‘FontName'(字体)---string这个属性声明了所使用的字体类型,使用'FixedWidth'就将字体设置为保存在根对象的'FixedWidthFontName'属性中的字体。
8 ‘FontSize'(字体大小)---number(数字),声明了字体的大小,单位为'FontUnits'属性所声明的单位。‘FontUnits—{‘points'(点)}|'normalized'|'inches'(英寸)|'centimeters'(厘米)|'pixels'(图素)这个属性声明了字体相对于这个高度的大小使用的单位,设定为'normalize'是指uicontrol的高度为1.
9 ‘FontWeight(字体粗细)'---'light'|{‘normal'}|'demi'(半)|'boid'
10 ‘ForegroundColor'(前景色)---ColorSpec(色值)声明了uicontrol的标签文本的颜色,ColorSpec是一个三元素的RGB向量,或者是一个标准颜色的字符串名,默认值为黑色。
11‘HorizontalAlignment'(水平方向上的对齐方式)—{‘left'}(左)|'center'(中)|'right'(右)这个属性声明了uicontrol在水平方向上的对齐方式,在windowspc机上,这个属性只影响到'edit'和'text'类型的uicontrol.
12 ‘ListboxTop'---scalar,对'listbox'类型的uicontrol,这个属性声明了显示在列表最顶端的字符串的索引。
13 ‘Max'(最大)---scalar(比列),对于'radiobutton'和'checkbox'类型的uicontrol,'Max'是uicontrol为'on'时'Value' 属性的值,对于'slider'类型的uicontrol,‘Max'是用户能够选择的最大值,并且它必须比'Min'属性所声明的值要大,默认值为1,对于'edit' 类型的uicontrol,如果'Max'-‘Min'>1,那么就可以进行多项选择,如果'Max'-‘Min'<=1,那么就只可以进行单项选择。
14 ‘Min'---scalar类似13
15 ‘Position'(位置)---[left(左) bottom(底) width(宽) heigh(高)]它声明了uicontrol的位置,格式为相对于图形窗口左下角的标准直角坐标格式,单位为'Units'属性所定义的单位,windowspc中‘popupmenu'类型的uicontrol的高度是由字体来设置的,并且将heigth 忽略。
16 ‘SliderStep'(滚动条步长)—[arrow_step trough_step]这个属性声明了一个值,这个值是经过标定的'Max'-'Min' ,大小在0到1间,arrow-step是点滚动条上的箭头时滚动条移动的步长, trough_step是点滚动条的滑槽时滚动条移动的步长。
17 ‘String'—string这个属性声明了显示在按钮,拨动按钮,静态文本,弹出菜单上的uicontrol标签字符串,弹出菜单中的多个菜单项或者列表中的多个列表项可以声明为字符串单元数组,字符串矩阵或者由竖线字符分开的字符串,多行可编辑文本或者静态文本控件中的行分隔符号出现在字符串矩阵的各行之间或者字符串单元数组的每一个单元之间,竖线字符未被解释成线分隔符,在'edit'类型的uicontrol中,经过修改的文本可以通过这个属性返回。
18.‘Style'(类型)—‘pushbutton'(按钮键)|'togglebutton'(触发器)|'radiobutton'(无线按钮)|'chechbox'(检查框)|'edit'(编辑)|'text'(文本)|'slider'(滑标)|'frame'(框)|'listbox'(列表)|'popupmenu'(跃上型)这个属性声明了要生成的uicontrol对象类型

19.’Visible’(可见)——该属性默认值为‘on’,当该值设置成’off’时,该控件不可见。通过控制控件的显示与不显示,可以完成‘刷新’界面的功能。

4.    设置和获取属性(set and get)

Set(handle,'PropertyName',PropertyValue,…)

PropertyValue=Get(handle, 'PropertyName');

上述是设置和获得属性的调用语法。无论是窗口、菜单还是控件,都可以通过set修改其属性,也可以通过get获取其属性。重要的是,一定要获得它们的句柄(handle),因此,在创建窗口、菜单和控件时,要保存它们的句柄。

Callback函数:在控件的回调函数中,我们可以通过获得或设置相应控件上的值,来达到我们的目的。因此,我们可以将句柄通过参数的方式或声明为全局变量,以达到在其他函数中设置获取控件的属性。

5.    特定区域显示图像

我们可以用subplot函数,将界面分成很多份,然后选择其中一份显示图像。但是,当我们的界面复杂时,我们需要在特定的区域内显示图像。我们可以采用如下方法:

NewImageShowHandle=axes('Units','normalized',...

  'position',[0.6 0.52  .3  .4],'Color',[0.2 0.2 0.2],'Visible','off','Parent',SystemFrameHandle);

imshow(uint8(reconstructed_image),'Parent',NewImageShowHandle);

也即是:先在特定的位置新建一个坐标(axes),然后在imshow函数中,设置显示图像的‘父窗口’即可。

6.    界面的刷新

一般情况下,不存在界面刷新的问题。但是,当我们需要在程序运行的过程中更新界面的某一个控件,我们就需要实时刷新界面。一般情况下,由于matlab在运行程序时,执行的是主线程,因为界面线程的优先级低于主线程,界面线程要等到主线程执行完之后才执行。但是,我们可以调用pause(0.000001)函数,让主线程暂停0.000001秒,刷新界面后再去执行主线程。基于此,我编写了一个‘进度提示’控件。详见示例代码。

时间: 2024-11-01 15:55:41

matlab GUI界面编程总结的相关文章

matlab-如何使用MATLAB进行界面编程

问题描述 如何使用MATLAB进行界面编程 如何使用MATLAB进行界面编程,我要进行均匀实验结果的线性回归分析,且已有其MALTAB程序代码,但是我不会使用MALTAB软件 解决方案 界面编程可以用GUI工具,图书馆应该有书借的. 解决方案二: http://wenku.baidu.com/link?url=TNBgqmjJpUpvwDL8G605XagCy_aq4qR9ASMgpV9pWBz3d-jLsQv67_sZYHjFCVufeXl0Kw1t-5OoWCnqvp4vd64vHXgtes

matlab-语言环境:MATLAB 如何做一个生成一维条码的GUI界面

问题描述 语言环境:MATLAB 如何做一个生成一维条码的GUI界面 语言环境:MATLAB 如何做一个生成一维条码的GUI界面 语言环境:MATLAB 如何做一个生成一维条码的GUI界面 语言环境:MATLAB 如何做一个生成一维条码的GUI界面

windows编程-初学Windows界面编程看什么书合适?

问题描述 初学Windows界面编程看什么书合适? 初学Windows界面编程看什么书合适?主要想做界面,和按键消息处理方面的编程,谢谢大神们! 解决方案 java GUI应用程序设计或者java+eclipse的书籍,要看你用什么语言 解决方案二: java GUI应用程序设计或者java+eclipse的书籍,要看你用什么语言 解决方案三: 你想走哪方面?有很多种,C# .NET WPF目前貌似比较火.qt也可以考虑,是跨平台的.还有就是MFC,现在在走下坡路,再就是win32,比较底层,后

indows编程-我想问一下,该选择哪种界面编程?

问题描述 我想问一下,该选择哪种界面编程? 我学了C和C++.最近一直在看<windows程序设计>,练习GUI编程,但是发现 用API写程序太麻烦了,效率好低,写个代码还要查半天资料,百分之八十的时间都 花在码代码而不是思考上面了.能推荐一个好用的封装么?我不知道QT和MFC谁更好用.效率谁更高,或者还有其他的一些?谢谢啦. 解决方案 我的个人感觉QT简单些 API写窗口,虽然代码比较多,但是执行效率很高. 解决方案二: AIP运算快,好用 解决方案三: QT肯定要比MFC好很多的. 建议学

【原创】Matlab.NET混合编程技巧之直接调用Matlab内置函数

              本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新    Matlab和C#混合编程文章目录 :[目录]Matlab和C#混合编程文章目录 在我的上一篇文章[原创]Matlab.NET混编技巧之--找出Matlab内置函数中,已经大概的介绍了matlab内置函数在混合编程中的优点,并通过程序找出了matlab中的大部分内置函数,当然更多人关心是如何像我所说得那样,不用直接编译,就直接在C#中调用这些内置函数.本文就带你揭开这些谜团. 声明,这篇文章是需要

设计-matlab GUI问题 正在写作业 急求!

问题描述 matlab GUI问题 正在写作业 急求! 设计一个界面:利用按钮.选项框,图形框等形式,分别用mesh.surf.plot3.contour3.contour等值线的形式(利用选项框可以选择等值线的条数)来表现函数z=5sin(x)cos(y)2 的曲面图,并通过按钮或其他形式将图形存成jpg文件.

Matlab.NET混合编程技巧之——直接调用Matlab内置函数(附源码)

原文:[原创]Matlab.NET混合编程技巧之--直接调用Matlab内置函数(附源码) 在我的上一篇文章[原创]Matlab.NET混编技巧之--找出Matlab内置函数中,已经大概的介绍了matlab内置函数在混合编程中的优点,并通过程序找出了matlab中的大部分内置函数,当然更多人关心是如何像我所说得那样,不用直接编译,就直接在C#中调用这些内置函数.本文就带你揭开这些谜团. 声明,这篇文章是需要一点点混合编程基础的,基本概念和过程要懂一点,如果能简单成功混编一个简单的计算或者绘图例子

matlab gui中使用定时器出错

问题描述 matlab gui中使用定时器出错 计算计时器 'timer-74' 的 TimerFcn 时出错 对象无效或已删除. 计算计时器 'timer-75' 的 TimerFcn 时出错 输入参数的数目不足 或者 计算计时器 'timer-98' 的 TimerFcn 时出错 对象无效或已删除. 计算计时器 'timer-99' 的 TimerFcn 时出错 H 必须是图形或图形子级的句柄. 我是这样编写的 定时器中,'TimerFcn',{@TimerFcn,handles} 回调函数

C语言控制台窗口图形界面编程之八 鼠标事件

上次讲的是键盘事件,这次我们介绍鼠标事件.下面先介绍下鼠标事件的结构体以及相关信息. typedef struct _MOUSE_EVENT_RECORD //鼠标事件结构体 { COORD dwMousePosition; //当前鼠标在控制台窗口缓冲区的位置 DWORD dwButtonState; //鼠标按键的状态 DWORD dwControlKeyState; //控制键状态 DWORD dwEventFlags; //鼠标事件类型 } MOUSE_EVENT_RECORD; /*