Matlab原理与应用_6_第1页
Matlab原理与应用_6_第2页
Matlab原理与应用_6_第3页
Matlab原理与应用_6_第4页
Matlab原理与应用_6_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第第6章章 用户图形界面设计用户图形界面设计 2图形用户界面(GUI)功能l用户可以方便地通过鼠标等输入设备与程序进行信用户可以方便地通过鼠标等输入设备与程序进行信息的交流,并控制程序的运行。息的交流,并控制程序的运行。lGUI包含图形对象:窗口、图标、菜单和文本的用户包含图形对象:窗口、图标、菜单和文本的用户界面。界面。l几种功能实现:几种功能实现:编写一个需要多次反复使用的程序编写或开发程序供他人使用创建一个过程、技术或分析方法的交互示例简洁并稳定的界面3本章目标l理解用户图形界面的用途理解用户图形界面的用途l掌握图形用户界面的设计开发工具掌握图形用户界面的设计开发工具GUIDEl理解图

2、形对象的常用句柄命令理解图形对象的常用句柄命令4主要内容l6.1图形用户界面设计工具图形用户界面设计工具GUIDEl6.2控件控件l6.3 GUIDE常用工具常用工具l6.4使用使用GUIDE的的GUI设计设计l6.5句柄图形句柄图形l6.6图形对象句柄命令图形对象句柄命令56.1图形用户界面设计工具GUIDEl可视化图形界面开发环境可视化图形界面开发环境GuideGraphical User Interface Development Environment6用户界面开发环境组成(1)菜单栏;)菜单栏;(2)Guide工具栏;工具栏;(3)图形控件面板;)图形控件面板;(4)界面编辑客户区。

3、)界面编辑客户区。76.2 控件1静态文本静态文本 2编辑框控件编辑框控件3列表框控件列表框控件4滚动条控件滚动条控件5按钮控件按钮控件6开关按钮控件开关按钮控件7单选按钮控件单选按钮控件 8按钮组控件按钮组控件9检查框控件检查框控件10列表框控件列表框控件11弹出式菜单控件弹出式菜单控件12坐标轴控件坐标轴控件13面板控件面板控件86.3 GUIDE常用工具常用工具lLayout Editor:布局编辑器;:布局编辑器;lAlignment Tool:对齐工具;:对齐工具;lProperty Inspector:对象属性观察器;:对象属性观察器;lObject Browser:对象浏览器;:

4、对象浏览器;lMenu Editor:菜单编辑器。:菜单编辑器。91布局编辑器(1)Cut:对选中的控件进行剪切操作。:对选中的控件进行剪切操作。(2)Copy:复制选中的控件。:复制选中的控件。(3)Paste:粘贴复制的控件。:粘贴复制的控件。(4)Delete:删除选中的控件。:删除选中的控件。(5)Duplicate:对选中的控件进行复制并粘贴。:对选中的控件进行复制并粘贴。(6)Property Inspector:对选中的控件打开属性检查器。:对选中的控件打开属性检查器。(7)Object Browser:打开对象浏览器。:打开对象浏览器。(8)ButtonDownFcn:按下鼠标

5、时控件回调的函数。:按下鼠标时控件回调的函数。(9)Callback:单击鼠标时控件回调的函数或功能。:单击鼠标时控件回调的函数或功能。(10)CreateFcn:定义控件在创建阶段执行的回调例程。:定义控件在创建阶段执行的回调例程。(11)DeleteFcn:定义在对象的删除阶段执行的回调例程。:定义在对象的删除阶段执行的回调例程。102对齐工具113对象属性观察器对象属性观察器一、控件风格和外观一、控件风格和外观(1)BackgroundColor:设置控件背景颜色,使用:设置控件背景颜色,使用R G B或颜色定义。或颜色定义。(2)CData:在控件上显示的真彩色图像,使用:在控件上显示

6、的真彩色图像,使用矩阵表示。矩阵表示。(3)ForegroundColor:文本颜色。:文本颜色。(4)String属性:控件上的文本,以及列表框和弹属性:控件上的文本,以及列表框和弹出菜单的选项。出菜单的选项。(5)Visible:控件是否可见。:控件是否可见。123对象属性观察器对象属性观察器二、对象的常规信息二、对象的常规信息(1)Enable属性:属性: 表示此控件的使能状态,设置为表示此控件的使能状态,设置为on”,表示可选,为,表示可选,为“off”时则表示不可选。时则表示不可选。(2)Style:控件对象类型。:控件对象类型。(3)Tag:控件表示(用户定义)。:控件表示(用户定

7、义)。(4)TooltipString属性:提示信息显示。当鼠标指针属性:提示信息显示。当鼠标指针位于此控件上时,显示提示信息。位于此控件上时,显示提示信息。(5)UserData:用户指定数据。:用户指定数据。(6)Position:控件对象的尺寸和位置。:控件对象的尺寸和位置。(7)Units:设置控件的位置及大小的单位:设置控件的位置及大小的单位(8)有关字体的属性,如)有关字体的属性,如 FontAngle, FontName等。等。133对象属性观察器对象属性观察器三、控件回调函数的执行三、控件回调函数的执行(1)BusyAction:处理回调函数的中断。有两种选项:即:处理回调函数

8、的中断。有两种选项:即Cancel:取消中断事件,:取消中断事件,queue:排队(默认设置)。:排队(默认设置)。(2)ButtonDownFcn属性:按钮按下时的处理函数。属性:按钮按下时的处理函数。(3)CallBack属性:是连接程序界面整个程序系统的实质性属性:是连接程序界面整个程序系统的实质性功能的纽带。该属性值应该为一个可以直接求值的字符串,功能的纽带。该属性值应该为一个可以直接求值的字符串,在该对象被选中和改变时,系统将自动地对字符串进行求值在该对象被选中和改变时,系统将自动地对字符串进行求值(4)CreateFcn:在对象产生过程中执行的回调函数。:在对象产生过程中执行的回调

9、函数。(5)DeleteFcn:删除对象过程中执行的回调函数。:删除对象过程中执行的回调函数。(6)Interruptible属性:指定当前的回调函数在执行时是否属性:指定当前的回调函数在执行时是否允许中断,去执行其他的函数。允许中断,去执行其他的函数。143对象属性观察器对象属性观察器四、控件当前状态信息四、控件当前状态信息(1)ListboxTop:在列表框中显示的最顶层的字符串:在列表框中显示的最顶层的字符串的索引。的索引。(2)Max:最大值。:最大值。(3)Min:最小值。:最小值。(4)Value:控件的当前值。:控件的当前值。154对象浏览器对象浏览器对象浏览器里面列出了所有对象

10、的树状结构,这些对象浏览器里面列出了所有对象的树状结构,这些结构就是当前正在设计的结构就是当前正在设计的GUI程序中用到的所有对象。程序中用到的所有对象。 165菜单编辑器菜单编辑器l菜单编辑器提供了两种菜单类型的编辑功能:菜单编辑器提供了两种菜单类型的编辑功能:l下拉式菜单(Menu Bar)l弹出式菜单(Context Menu)17例: 编写一个3D立体图的演示程序186.4 使用使用GUIDE的的GUI设计设计l使用使用Guide进行进行GUI的界面设计,就像在纸上绘制界的界面设计,就像在纸上绘制界面一样简单。面一样简单。l界面编辑工具设计出界面的大体方案l事件过程编辑器编写各个对象的

11、事件代码lGUI的的M文件文件 l与句柄结构共享数据 l M文件中的函数和响应 l控件的使用控件的使用 l使用句柄结构进行使用句柄结构进行GUI数据操作数据操作19例 建立一个图形界面来显示和处理三维图形 基本功能要求如下。基本功能要求如下。(1)建立一个坐标系,以备以后来绘制三维图形;)建立一个坐标系,以备以后来绘制三维图形;(2)建立三个按钮,用于启动绘图功能;)建立三个按钮,用于启动绘图功能;(3)建立一个组合框()建立一个组合框(Popup Menu),用于显示不同的图形。),用于显示不同的图形。20步骤:(1)打开布局编辑器)打开布局编辑器(2)增加组件)增加组件(3)对齐工具)对齐

12、工具(4)设置每个组件的属性;)设置每个组件的属性;(5)设置)设置Guide应用程序选项,采用默认属性。应用程序选项,采用默认属性。(6)激活图形)激活图形21程序代码:程序代码:function varargout = My0703(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, My0703_OpeningFcn, . gui_OutputFcn, My0703_OutputFcn, . gui_Layo

13、utFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end系统自动生成系统自动生成22程序代码:程序代码:function My0703_OpeningFcn(hObject, eventdata, handles, var

14、argin)handles.peaks=peaks(35);handles.membrane=membrane;x,y=meshgrid(-8:0.5:8);r=sqrt(x.2+y.2)+eps;sinc=sin(r)./r;handles.sinc=sinc;handles.current_data=handles.peaks;surf(handles.current_data);handles.output = hObject;guidata(hObject, handles);23function varargout = My0703_OutputFcn(hObject, eventd

15、ata, handles) varargout1 = handles.output;function Surf_pushbutton_Callback(hObject, eventdata, handles)surf(handles.current_data);function Mesh_pushbutton_Callback(hObject, eventdata, handles)mesh(handles.current_data);function Contour_pushbutton_Callback(hObject, eventdata, handles)contour(handles

16、.current_data);24程序代码:程序代码:function data_popup_Callback(hObject, eventdata, handles)val=get(hObject,Value);str=get(hObject,String);switch strvalcase peaks handles.current_data=handles.peaks;case membrane handles.current_data=handles.membrane;case sinc handles.current_data=handles.sinc;endguidata(hOb

17、ject,handles);25与句柄结构共享数据l当运行当运行GUI时,时,M文件创建一个包含所有文件创建一个包含所有GUI对象对象(如控件、菜单和坐标轴如控件、菜单和坐标轴)的句柄结构,句柄结构作为的句柄结构,句柄结构作为一个每个响应的输入来处理。用户使用句柄结构可一个每个响应的输入来处理。用户使用句柄结构可以实现如下操作。以实现如下操作。l在各响应之间实现数据共享;l访问GUI数据。26在各响应之间实现数据共享 l用户欲取得变量用户欲取得变量X的数据,可以先将句柄结构的的数据,可以先将句柄结构的一个域设为一个域设为X,然后在使用,然后在使用guidata函数函数保存该保存该句柄结构,如下

18、所示:句柄结构,如下所示:lhandles.current_data = X;lguidata(hObject,handles)l用户可以在其他任何响应中重新得到该变量的用户可以在其他任何响应中重新得到该变量的值,使用的操作如下。值,使用的操作如下。lX = handles.current_data;27访问GUI数据 l用户可以利用句柄结构获取用户可以利用句柄结构获取GUI控件的数据控件的数据 val=get(hObject,Value);str=get(hObject,String);28M文件中的函数和响应 l用户可以给用户可以给GUI的的M文件的如下部分增加程序文件的如下部分增加程序代

19、码:代码:l打开函数打开函数(Opening function),该函数在,该函数在GUI可见可见之前实施操作。之前实施操作。l输出函数输出函数(Output function),在必要的时候向命令,在必要的时候向命令行输出数据。行输出数据。l响应响应(Callbacks),在用户激活,在用户激活GUI中的相应控件时中的相应控件时实施操作。实施操作。29打开函数 l打开函数包含有在打开函数包含有在GUI可见之前进行操作的代码,可见之前进行操作的代码,用户可以在打开函数中访问用户可以在打开函数中访问GUI的所有控件,因为的所有控件,因为所所GUI中的对象都在调用打开函数之前就已经创建。中的对象都

20、在调用打开函数之前就已经创建。l 如果用户需要在访问如果用户需要在访问GUI之前实现某些操作之前实现某些操作(如创如创建数据或图形建数据或图形),那么可以通过在打开函数中增添,那么可以通过在打开函数中增添代码来加以实现。代码来加以实现。l对于一个文件名为mygui的GUI来说,它的打开函数的定义语句如下。lfunction mygui_OpeningFcn(hObject, eventdata, handles, varargin)30输出函数 l输出函数将输出结果返回给命令行。这一点在用输出函数将输出结果返回给命令行。这一点在用户需要将某个变量传递给另一个户需要将某个变量传递给另一个GUI时

21、尤其实用。时尤其实用。lGUIDE在输出函数中生成如下代码。l% - Outputs from this function are returned to the command line.lfunction varargout = mygui_OutputFcn(hObject, eventdata, handles)l% Get default command line output from handles structurelvarargout1 = handles.output;316.5 句柄图形句柄图形l图形用户界面图形用户界面( Graphic User Interface)是

22、指包含)是指包含图形对象的用户界面,是图形对象的用户界面,是Matlab句柄图形句柄图形系统的子系系统的子系统。统。l它包含两类图形对象:它包含两类图形对象:l一是用户界面一是用户界面控件对象控件对象(Uicontrol););l一是用户界面一是用户界面菜单对象菜单对象(Uimenu)。)。l句柄图形基于这样的概念:一幅图的每一个组成部句柄图形基于这样的概念:一幅图的每一个组成部分都是一个分都是一个对象对象(Object),每一个对象有,每一个对象有一系列句柄一系列句柄(Handle)和它相关。和它相关。32句柄句柄(Handle)是分配给每一个是分配给每一个对象的数字标识对象的数字标识( I

23、dentifier),每创建一个对象时,就为它建立一个惟,每创建一个对象时,就为它建立一个惟一的句柄。一的句柄。句柄是存取图形对象的惟一规范识别符句柄是存取图形对象的惟一规范识别符,不同对象的句柄不可能重复和混淆。不同对象的句柄不可能重复和混淆。l每台计算机的根对象是每台计算机的根对象是根屏幕根屏幕(Root),其,其句柄句柄总是数总是数字字0;而;而图形窗口图形窗口(Figure)的的句柄句柄总是总是正整数正整数,用它,用它来标识图形窗的序号。除根对象和图形对象外,来标识图形窗的序号。除根对象和图形对象外,其其余对象的句柄余对象的句柄则是则是双精度浮点数双精度浮点数。l除了除了根对象根对象外

24、,所有的对象都由与之相对应的外,所有的对象都由与之相对应的内置内置函数函数(Build-in Function)创建,每个函数在创建对象创建,每个函数在创建对象的同时,还可以返回该的同时,还可以返回该对象的句柄对象的句柄 h。336.5.1句柄图形的层次关系句柄图形的层次关系346.5.2图形窗口对象的属性图形窗口对象的属性1Color属性属性2MenuBar属性属性3Name属性属性4NumberTitle属性属性5Units 属性属性6Position属性属性7Resize属性属性8Visible属性属性9NextPlot属性属性10打印纸属性打印纸属性11各种回调函数各种回调函数356.

25、6 图形对象句柄命令图形对象句柄命令l句柄系统可以从底层句柄系统可以从底层(1ow level)创建和操作线、面、创建和操作线、面、文字、图像等基本图形对象指令。文字、图像等基本图形对象指令。 366.6.1建立图形对象的函数1figure函数:创建一个新的图形对象。函数:创建一个新的图形对象。2newplot函数:做好开始画新图形对象的准备。函数:做好开始画新图形对象的准备。3axes函数:创建坐标轴图形对象。函数:创建坐标轴图形对象。4line函数:画线。函数:画线。5patch函数:填充多边形。函数:填充多边形。6surface函数:绘制三维曲面。函数:绘制三维曲面。7image函数:显

26、示图片对象。函数:显示图片对象。8uicontrol函数:生成用户控制图形对象。函数:生成用户控制图形对象。 9uimenu函数:生成图形窗口的菜单中层次菜单与下一级子菜函数:生成图形窗口的菜单中层次菜单与下一级子菜单。单。3738例 显示曲线图程序程序:h=figure();t=0:pi/10:2*pi;line(t, sin(t);line(t, cos(t);01234567-1-0.500.51396.6.2 图形对象句柄的获得和删除图形对象句柄的获得和删除lgcf函数:获得当前图形窗口的句柄函数:获得当前图形窗口的句柄lgca函数:获得当前坐标轴的句柄函数:获得当前坐标轴的句柄lgc

27、o函数:获得当前对象的句柄函数:获得当前对象的句柄lgcbo函数:获得当前正在执行调用的对象的句柄函数:获得当前正在执行调用的对象的句柄lgcbf函数:获取包括正在执行调用的对象的图形句柄函数:获取包括正在执行调用的对象的图形句柄ldelete函数:删除句柄所对应的图形对象函数:删除句柄所对应的图形对象lfindobj函数:查找具有某种属性的图形对象函数:查找具有某种属性的图形对象40l在获取图形句柄后,即可对在获取图形句柄后,即可对图形对象进行各种操作图形对象进行各种操作。l(1). 删除图形对象的删除图形对象的delete 命令命令l调用格式为:调用格式为: l delete(h) l该命

28、令可以删除句柄该命令可以删除句柄h所指的所指的对象及其所有的子对象对象及其所有的子对象。l例如例如 delete(gca)将删除当前轴和它所有的子对象。将删除当前轴和它所有的子对象。 l由于该命令不提供确认、直接执行,用户在使用时由于该命令不提供确认、直接执行,用户在使用时应应谨慎谨慎进行。进行。41l(2). 函数函数 findobj l快速地快速地遍历遍历对象层,并对象层,并获取获取指定属性的指定属性的对象句柄对象句柄。l调用方式如下:调用方式如下: lh=findobj(propertyname,propertyvalue,) 在所有在所有的对象层中查找符合指定属性值的对象,返回句柄的对

29、象层中查找符合指定属性值的对象,返回句柄值值h; lh=findobj(ObjectHandle ,propertyname,propertyvalue,) 查找范围限制在句柄查找范围限制在句柄“ ObjectHandle”指定指定的对象及其子对象中;的对象及其子对象中;lh=findobj返回根对象和所有子对象的句柄值;返回根对象和所有子对象的句柄值;lh=findobj(ObjectHandles)返回返回” ObjectHandle”指指定的对象和其所有子对象的句柄值。定的对象和其所有子对象的句柄值。 42创建一个图形对象,并寻求图形对象的句柄值创建一个图形对象,并寻求图形对象的句柄值m

30、esh(peaks(30); %创建多峰的网格图 text(30,20,2,leftarrowpeak) %给图形对象加上文本,图形 %对象中包括坐标轴、线条和文本标注 h=findobj(gcf) %求当前图形窗口的句柄 h= %返回句柄值赋予变量 1.0000 99.0010 101.0006 100.0016句柄中的元素排列顺序决定于各个对象在整个句柄中的元素排列顺序决定于各个对象在整个对象对象层次结构层次结构中的位置。中的位置。 h(1)=1 为为图形对象(图形对象( Figure)的句柄;的句柄;h(2)=99.001 为图的下一级子对象为图的下一级子对象坐标轴坐标轴的句柄;的句柄;

31、h(3)=101.0006 为坐标轴的下一级子对象为坐标轴的下一级子对象线条线条的句柄;的句柄;h(4)=100.0016 为坐标轴的下一级子对象为坐标轴的下一级子对象文本文本的句柄。的句柄。43所有的对象都有所有的对象都有属性属性( Property),对象的属性可对象的属性可包括诸如对象的包括诸如对象的位置、颜色、类型、父对象、子位置、颜色、类型、父对象、子对象及其他内容对象及其他内容。可通过设定这些属性来定义和。可通过设定这些属性来定义和修改对象的特征。修改对象的特征。对象属性包括对象属性包括属性名属性名(字符串,字符串,识别属性时不分识别属性时不分大小写大小写)和相应的和相应的属性值属

32、性值。利用利用 get、set 命令命令*在在 命令窗口中直接查询对象命令窗口中直接查询对象的属性。的属性。 7.6.3对象属性的获取和设置对象属性的获取和设置44调用方法:调用方法: v=get(H,PropertyName)-返回句柄为返回句柄为H的对象中名的对象中名为为PropertyName属性的值。属性的值。H是向量,将同时返回向量是向量,将同时返回向量H中每个句柄对应图形对象的指定属性值,中每个句柄对应图形对象的指定属性值, H是标量,返回句是标量,返回句柄为柄为H的对象的所有属性名及其当前取值;的对象的所有属性名及其当前取值; v = get(h)-h 是标量,返回一个结构,结构

33、的每个域名就是是标量,返回一个结构,结构的每个域名就是句柄为句柄为h的对象的属性名,每个域又包括属性的值;的对象的属性名,每个域又包括属性的值;get 函数函数*用于获取指定对象的属性。用于获取指定对象的属性。45v=get(0,factory) -对于所有对于所有类型的对象,返回所有可以由用户设定的属性的类型的对象,返回所有可以由用户设定的属性的 “初始值初始值”( 即未经过任何用户改动的最初缺省值),尖括号内的内即未经过任何用户改动的最初缺省值),尖括号内的内容表示可选。容表示可选。v=get(h,default) -返回缺返回缺省的属性值。句柄省的属性值。句柄h必须是标量,尖括号内的内容表示可选,必须是标量,尖括号内的内容表示可选,如果这两个内容都不选,那么该函数返回句柄为如果这两个内容都不选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论