MATLAB图形界面制作(GUI)与句柄图形.ppt_第1页
MATLAB图形界面制作(GUI)与句柄图形.ppt_第2页
MATLAB图形界面制作(GUI)与句柄图形.ppt_第3页
MATLAB图形界面制作(GUI)与句柄图形.ppt_第4页
MATLAB图形界面制作(GUI)与句柄图形.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

2019/4/26,1,MATLAB图形界面制作(GUI),2019/4/26,2,图形用户界面的作用,假如进行数据分析、解方程等计算结果比较单一的工作,那么一般不会考虑GUI的制作。但是如果想向别人提供应用程序,想进行某种技术、方法的演示,想制作一个供反复使用且操作简单的专用工具,那么图形用户界面也许是最好的选择之一。,2019/4/26,3,设计原则,由于要求不同,设计出来的界面也就千差万别。但是,自从人们开始设计图形界面以来,界面设计的评判标准却没有太大的变化。简单来说,一个好的界面应遵循以下三个原则 : (1)简单性 : 设计界面时,力求简洁、直观、清晰地体现出界面的功能和特征。 (2)一致性: 所谓一致性有两层含义:一是读者自己开发的界面风格要尽量一致;二是新设计的界面要与其他已有的界面风格不要截然相左。这是因为用户在初次使用新界面时,总习惯于凭经验进行试探。比方说,图形显示区常安排在界面左半边,而按键等控制区被排在右侧。 (3)其他考虑因素: 除了以上对界面的静态要求外,还应注意界面的动态性能。如界面对用户操作的响应要迅速、连续;对持续时间较长的运算,要给出等待时间提示,并允许用户中断运算。,2019/4/26,4,一般制作步骤,界面制作包括界面设计和程序实现。具体制作步骤如下: (1)分析界面所要求实现的主要功能,明确设计任务。 (2)构建界面草图,并站在使用者的角度来审查草图。 (3)按构思的草图制作(静态)界面并检查。 (4)编写界面动态功能的程序,对功能进行逐项检查。 说明 以上过程,仅是一般原则。在设计中,步骤之间也许要交叉执行或复合执行。 设计和实现过程往往需要反复修改才能获得满意的界面。 建议先进行界面布局编码,后进行动态交互功能的编码。,2019/4/26,5,界面编程需要注意的事项,用户界面适合软件的功能(合适性)。是指用户界面与软件功能相融洽的程度。要避免用户的误解、费解等。另外,不能为适应某种体系结构的优势而导致界面的不合适性。 容易理解。如果通过界面难以理解界面的意图,使用起来一定费力。容易理解是容易应用的前提。要做到这一点:(1)界面中不能有错字。(2)图标按钮含义直观明了。(3)界面元素提供充分而必要的提示。(4)界面结构能够清晰的反映工作流程,以便用户操作。 及时反馈信息。 防错处理。,风格一致和必要的个性化。风格一致的好处是可以减少用户的记忆量,减少出错几率,并迅速积累操作经验。必要个性化是使用户对软件留下深刻印象。合理布局。 合理色彩。难,不同的人对颜色的喜好不同。另外不可过分依靠色彩,因为用户有可能是色盲或色弱。 适应用户群体和国际化。 最少的操作步骤。 可以复用。,不同的界面效果直接影响相关感受,所以精心设计很有必要。请看示例,2019/4/26,6,设计过程,是否满足要求,添加动态功能,制作静态界面,构建界面草图,并审查,明确设计任务,2019/4/26,7,示例,好的界面,2019/4/26,8,设计工具(GUIDE),为了能够简单、方便地进行GUI的设计与开发工作,MATLAB提供了一套方便、实用的GUI设计工具。MATLAB中的GUI设计工具包括以下几个: 对象设计编辑器(Layout Editor)(有的书上成为布局编辑器): 在图形窗口内创建、安排各种对象 。 菜单编辑器(Menu Editor) :创建、设置、修改下拉式菜单和内容式菜单; 对象属性查看器(Property Inspector):可查看每个对象的属性值,也可修改、设置对象的属性值;,2019/4/26,9,对象设计编辑器 (Layout Editor),在MATLAB命令窗口内,选择File主菜单的New子菜单,会看到一个GUI的二级子菜单,单击它,就会显示对象设计编辑器(Layout Editor);也可以在MATLAB命令窗口的命令行上输入guide,显示对象设计编辑器。启动窗口如右图所示。,2019/4/26,10,对象设计编辑器 (Layout Editor),2019/4/26,11,菜单编辑器,利用菜单编辑器,可以创建、设置、修改下拉式菜单和内容式菜单。从对象设计编辑器界面的工具条上或从菜单栏中Tools的下拉菜单中选择Menu Editor ,就可以看到菜单编辑器(Menu Editor)的界面,如右图所示。,2019/4/26,12,菜单编辑器(2),图中左上角第一个按钮用于创建下拉式菜单。用户可以通过点击它,来创建下拉式主菜单。第二个按钮用于创建下拉式主菜单的子菜单,在选中已经创建的下拉式主菜单后,可以单击这个按钮来创建选中的下拉式主菜单的子菜单。选中创建的某个下拉式菜单,菜单编辑器的右边就会显示该菜单的有关属性,可以在这里设置、修改菜单的属性。 菜单编辑器界面的左下角有两个按钮,选择第一个按钮,可以创建下拉式菜单,选择第二个按钮,可以创建context Menu菜单(类似于弹出式菜单)。选择它后,图中左上角的第三个按钮就会变成可用,单击它可以创建Context Menu主菜单。在选中已经创建的Context Menu主菜单后,可以单击第二个按钮创建选中的Context Menu主菜单的子菜单。与下拉式菜单一样,选中创建的某个Context Menu菜单,菜单编辑器的右边就会显示该菜单的有关属性,可以在这里设置、修改菜单的属性。,2019/4/26,13,对象属性查看器,利用对象属性查看器,可以查看每个对象的属性值,也可以修改、设置对象的属性值,从对象设计编辑器界面工具条,或者选择view菜单下的Inspect Property子菜单,就可以看到对象属性查看器的界面。另外,在MATLAB命令窗口的命令行上输入inspect,也可以看到对象属性查看器。如右图所示。,2019/4/26,14,图形界面制作菜单,在绝大多数的图形用户界面下,都包含有菜单。通过选择各级菜单,可以执行相应的命令,实现相应的功能。一般地,从菜单的标题或名字可以大概了解该菜单的功能。在Windows系统中,菜单一般位于用户图形界而的顶端。例如,MATLAB的主窗口中,就有一个主菜单栏,包括File、Edit、View、Help等主菜单。在各级主菜单下,还有相应的子菜单。 在MATLAB图形用户界面(GUI)设计中,有两种菜单类型,分别是下拉式菜单类型Uimenu和内容式菜单类型Uicontextmenu。,2019/4/26,15,图形界面制作菜单(2),菜单的建立: 在MATLAB中,可以通过命令行方式和GUI设计工具中的菜单 编辑器两种方式建立菜单: (1)命令行方式 :在命令行方式下,可以通过函数uimenu建 立下拉式菜单对象。 (2)GUI设计工具菜单编辑器方式。 菜单的属性: 利用函数uimenu建立菜单时,可以定义菜单属性的属性值;利用函数set,可以设置、改变属性的属性值;利用get函数,可以获得菜单属性的属性值,也可以通过Property Inspector GUI设计工具来设置、修改菜单属性值。,2019/4/26,16,图形界面制作控件,在绝大多数的图形用户界面下,都包含有控件。控件是图形对象,它与菜单一起用于建立图形用户界面。通过使用各种类型的控件,可以建立起操作简便,功能强大的图形用户界面。MATLAB也提供了多种控件,可以把它们放置在图形窗口的任何位置,并用鼠标激活它们。MATLAB支持的控件对象有10种。,2019/4/26,17,控件对象类型,MATLAB支持复选框Check boxes、可编辑文本框Edit text,框架Frames、列表框List boxes、弹出式菜单Popup menus、命令按钮Push buttons、单选按钮Radio buttons、滑标Sliders、静态文本框Static text、开关按钮Toggle buttons等十种类型的控件对象,2019/4/26,18,控件对象类型(1),(1)复选框(Check boxes) 复选框有一个标志文本,在标志文本的左边有一个小方框。它对于用户进行大量的独立选择很有用。为了激活复选框,可以使用鼠标单击复选框对象,使复选框在选中与不选中状态间进行切换。当选中时,复选框的value属性值是1;当没有选中时,复选框的小方框内为空,此时复选框的value属性值为0。复选框的Sytle属性值是checkbox。 (2)可编辑文本框(Edit text) 当需要输入文本时,可以使用可编辑文本框。通过可编辑文本框,用户可以方便地输入或修改已经存在的文本串,这与文本编辑器的功能是一样的。可编辑文本框的String属性中存储输入的文本串。 可编辑文本框可以是单行或多行文本模式。当可编辑文本框是单行模式时,只允许输入单行文本串;当可编辑文本框是多行模式时,可以输入多行文本。可编辑文本框的Style属性值是edit。,2019/4/26,19,控件对象类型(2),(3)框架(Frames) 框架对象是在图形窗口内,视觉上封闭起来的一个区域,只有控件可以在框架中使用。一般把作用相关的一组控件用框架框起来,这样的用户界面很容易被用户理解。框架没有Callback例程。框架是不透明的,所以设置框架与框架中控件的顺序很重要。如果框架内控件先于框架被设置,那么框架设置后就会覆盖原先设置的控件。般地,应在定义框架后再定义框架中的控件。框架的style属件值是frame。 (4)列表框(List boxes) 列表框中列出其String属性的字符串项。用户可以方便的选择一个或多个列表项。列表框的Max和Min属性控制选择模式;Value属性标明选择的列表项的索引值。当列表框上的鼠标松开后,MATLAB会调用Callback例程。一般地,单击与双击列表框的效果是不一样的。列表框的Style属性值是listbox。,2019/4/26,20,控件对象类型(3),(5)弹出式菜单(Popup menus) 弹出式菜单是一个显示信息的框,框的右边有一个下拉式箭头。单击下拉式箭头,就会显示一个列表,里面包含String属性定义的属性值。当没有打开列表时,信息框内显示的是当前选择的表项。当打开列表,从中选挥一个表项并单击后,该表项就会出现在信息显示框内。弹出式菜单对于用户进行大量的互相不同的选择是很有用的。如果不用弹出式菜单,那么就必须设置大量互不相同的单选按钮。弹出式菜单的Style属性值是popupmenu。 (6)命令按钮(Push buttons) 命令按钮是一个矩形的凸出对象。在命令按钮对象上标有一个字符串,用于标识该命令按钮。单击命令按钮,会产生相应的动作。用鼠标单击命令按钮后,命令按钮会凹下,但当松开鼠标后,命令按钮又会弹起,这与下面的开关按钮不同。命令按钮的Style属性值是Pushbunton。,2019/4/26,21,控件对象类型(4),(7)单选按钮(Radio buttons) 与复选框相似,单选按钮有一个标志文本,在标志文本的左边有一个小圆圈,它对于用户进行功能互斥的选择很有用。在一组单选按钮中,一次只能有一个单选按钮被选中,这与可以同时选中多个的复选框不同。为了激活单选按钮,可以使用鼠标单击单选按钮对象,使单选按钮在选中与不选中状态间进行切换。当选中时,复选框的小圆圈内有一个点,此时单选按钮的value属性值是1;当没有选中时,单选按钮的小圆圈内为空,此时单选按钮的value属性值为0。单选按钮的style属性值是radiobutton。 (8)滑标(Sliders) 其功能类似于滚动条,它由三个部分组成,分别是滚动槽、滚动槽内的指示条和滚动槽两端的箭头。其中,滚动槽表明滑标的有效值范围,指示条表明滑标的当前值,通过箭头可以左右移动指示条。用户在选中指示条后通过鼠标拖动指示条,可以改变滑标的值,也可以通过单击两端的箭头来改变滑标的值。可以通过函数设置滑标的最小值、最大值与当前值。滑标的Style属性值是slider。,2019/4/26,22,控件对象类型(5),(9)静态文本框(Static text) 静态文本框静态显示文本字符申。静态文本框通常用于显示别的控件的有义信息。例如,如果与滑标相连,可以在静态文本框中显示滑标的当前值。与可编辑文本框不同,用户不能交量地改变静态文本框中的内容。静态文本框没有Callback例程。静态文本框的Style属性值是text。 (10)开关按钮(Toggle buttons) 开关按钮的外观与命令按钮类似,是一个矩形的凸出对象,同时在开关按钮对象上也标有一个字符串,用于标识该开关按钮。与命令按钮不同的是,当用鼠标单击开关按钮并松开后,开关按钮不会弹起。再单击一次,它才会弹起,这可以表明开关按钮的状态。单击开关按钮,会产生相应的动作,执行相应的Callback例程。在进行工具条的设计时,开关按钮时非常有用的。开关按钮的Style属性值是togglebutton。,2019/4/26,23,控件的建立,与菜单对象一样,可以通过命令行方式与GUI设计工具两种方式来建立控件。 (1)命令行方式: 在命令行方式下,可以通过函数uicontrol来建立控件对象。 (2)GUI设计工具: 利用GUI设计工具中的对象设计编辑器(Layout Editor),可以容易地创建MATLAB支持的各种控件,而且通过对象属性查看器(Object Inspector),可以方便地修改、设置创建的控件的属性值。 注意:命令行方式常常用于动态修改界面外观,比如执行到某种功能出现某个按钮,GUI设计工具常常用于最初的界面设计。,2019/4/26,24,控件的属性,在命令行的方式下或者GUI设计方式下,可以方便的设置、修改控件属性的属性值。在命令行方式下,利用uicontrol建立控件时,可以定义控件属性的属性值;利用函数set可以设置、改变属性的属性值;利用函数get可以获得属性的属性值。在GUI设计方式下,也可以通过Property Inspector GUI设计工具来设置控件的属性值。,2019/4/26,25,编写GUI代码(1),当我们利用GUIDE完成一个应用程序界面布局设计后,保存设计结果时,MATLAB将其保存为后缀为.fig的一个文件,并自动生成的一个与之同名的M文件。这个M文件是控制GUI的一个程序框架,正是这个程序框架,促进了一种高效稳健的编程风格。应用M文件包含了callback函数在内的所有代码,每一个回调函数在M文件中用子程序的形式出现。,GUIDE自动为其添加到M文件中的callback子程序命名,它还将回调属性的值设置为一个字符串,保证用户在激活控件时运行这一子程序。我们已经看到,在GUI布局中添加元件时,GUIDE先为该元件的Tag属性分配一个数值,再以此命名回调函数。比方说,在布局中添加的第一个push button被称为pushbutton1,GUIDE在M文件中添加的callback子程序被命名为pushbutton1_Callback;我们如果想要实现按下该按钮进行某种操作,就可以在应用M文件中找到pushbutton1_Callback的位置,对该子程序进行编码,以实现我们需要的操作即可。,2019/4/26,26,GUI编程举例,功能: (1)在点击【Grid on】或【Grid off】按钮时,在轴上画出或删除“分格线”;缺省时,无分格线。 (2)在菜单【Options】下,有2个下拉菜单项【Box on】和【Box off】;其功能和两个按钮的一样。,2019/4/26,27,第一步,打开GUIDE工具,编辑初始界面。,2019/4/26,28,第二步,设置各控件的属性,2019/4/26,29,第三步,调整各控件的位置,2019/4/26,30,第四步,制作菜单(利用Menu Editor),2019/4/26,31,第五步,M文件编程 运行结果,2019/4/26,32,句柄图形,图形细致处理和界面编程的基础,2019/4/26,33,句柄图形对象,MATLAB图形绘制系统是由两个层次组成的:用于提供用户友好的绘图功能的高级层次和用于创建及操作线、面、文字、投影等基本图形对象的低级函数。高级功能是建立在低级函数的基础之上的,它为用户的图形绘制提供了极大的方便,因为它不要求用户去操作线、面等的细节。但是使用低级的绘图函数也有其优越性,它能提供对图形的各个基本对象的更细致的控制,不仅可以产生更加复杂的图形,也为动态的绘制图形提供了基础。MATLAB的这个低级函数系统称为句柄图形(Handle Graphics)。,2019/4/26,34,图形对象和对象句柄,图形对象 MATLAB把用于数据可视和界面制作的基本绘图要素称为句柄图形对象(Handle Graphic object)。构成MATLAB句柄图形体系的共有11个图形对象,每个图形对象都可以被独立操作。 句柄 每个具体对象都有一个“与生俱来、终生不变”的独特标志,即句柄(Handle)。句柄是存取操作图形对象的唯一规范标识符。不同对象的句柄不可能重复和混淆。,2019/4/26,35,句柄图形对象的层次结构,图形对象包括:根屏幕(Root Screen)、图(Figure)、轴(Axes)、线(Line)、块(Pathes)、面(Surface)、图像(Image)、文字(Text)、用户界面控制(User Interface Control)和用户界面菜单(User Interface Mesnus)。这些对象的层次结构为下图树状结构所示:,2019/4/26,36,句柄图形对象的层次结构(2),处于树结构最高层的图形对象是根屏幕。是所有其他图形对象的“父(parent)”。 图形窗有三个不同的“子”:轴、界面控制和界面菜单。后两类用于制作用户图形界面,实现对人机交互操作。 轴有7种不同类型的“子”:线、面、方、块、图像、字和光。,2019/4/26,37,图形对象的属性,属性 所有的图形对象都有一组定义和刻画其外貌特征的属性(Properties)。属性又由两部分组成:属性名和属性值,即属性二元对(Property_Name,Property_Value)在操作属性的指令中,属性名和属性值总是成对出现。 属性名是英文字符串。该英文词组每个单词首字母大写且单词间没有空格。例如:LineStyle。这样书写便于阅读。但在指令中引用属性名时,为用户书写方便,MATLAB采取了两个措施:第一,不分字母大小写,都同样识别,第二,只要不引起歧义,属性名不用写全。如:用LineStyle时只输入line就可以识别。 缺省属性 在创建图形对象时,MATLAB并不需要用户对每个属性加以定义。因为只要用户没有特别指定,MATLAB会自动给每个图形对象的每个属性赋予“厂家定义(Factory-defined)”的属性值。如果用户对MATLAB默认的属性不满意,可以通过指令对相应的属性进行修改,或在创建图形对象的时候就直接指定。,2019/4/26,38,图形对象的操作,图形对象的创建指令 除根屏幕外,所有图形对象都由与之同名的指令创建。这些指令均为MATLAB内建函数,每个指令在创建对象的同时,还可返回该对象的句柄。 每个底层函数只能创建这11个图形对象中的一个,并将它们置于适当的父辈对象之中。例如:line指令的操作是在当前画轴上利用缺省属性画“线”。如果调用此指令前图形窗口和画轴不存在,则MATLAB会自动创建它们,如果已经存在,则这条“线”将画在当前轴上,且不影响该轴上的已有的其他对象。(这与高层绘图指令不同)。这个特点非常重要,特别是当图形仅有一部分需要改变时。,2019/4/26,39,图形对象创建指令一览表,2019/4/26,40,图形对象的句柄获得方法,从图形创建指令获取句柄 H=GraphicCommand() 如:Hfigure(n) 追溯法获取句柄 如果一个对象的句柄已知,可以用如下格式获得其父或子对象的句柄。 H_pa=get(H_known,Parent) H_ch=get(H_known,Children) 当前对象句柄的获取 MATLAB有如下三个专用获取图形句柄的指令:前两个是直接指令,后一个是和鼠标配合使用。 (1)gcf:获得当前图形窗口的句柄 (2)gca:获得当前轴的句柄; (3)gco:获得当前对象的句柄(被鼠标最近点击的图形对象): 根据对象的特性获取句柄 H=findobj(H_ori,PN,PV) 在H_ori指定的对象上,寻找与属性对(PN,PV)匹配的对象句柄。,2019/4/26,41,句柄获取示例,例1:创建时获得句柄 t=0:0.01:2*pi; h=plot(t,sin(t),b); 例2:追溯法获得句柄 H_pa=get(h,Parent); 例3:获得当前对

温馨提示

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

评论

0/150

提交评论