580 likes | 728 Views
第 6 章 MATLAB 绘图 (3). 6.4 句柄图形. 6.4.1 句柄图形体系 1 图形对象和句柄 图形对象是一组紧密相关、形成惟一整体的子对象的集合,并且子对象可以被单独地操作。 在创建每一个图形对象时,都为该对象分配惟一的一个数值,称为图形对象句柄。句柄是图形对象的惟一标识符,不同对象的句柄是不同的。. 2 句柄图形的结构. 由图形创建函数产生的每一个对象都是图形对象,包括图形窗口、坐标轴、线条、曲面和文本,这些对象按父对象和子对象组成层次结构。 计算机屏幕是根对象,并且是所有其他对象的父对象。
E N D
6.4 句柄图形 6.4.1句柄图形体系 1 图形对象和句柄 • 图形对象是一组紧密相关、形成惟一整体的子对象的集合,并且子对象可以被单独地操作。 • 在创建每一个图形对象时,都为该对象分配惟一的一个数值,称为图形对象句柄。句柄是图形对象的惟一标识符,不同对象的句柄是不同的。 MATLAB 7.X程序设计
2 句柄图形的结构 • 由图形创建函数产生的每一个对象都是图形对象,包括图形窗口、坐标轴、线条、曲面和文本,这些对象按父对象和子对象组成层次结构。 • 计算机屏幕是根对象,并且是所有其他对象的父对象。 • 图形窗口是根对象的子对象,坐标轴和用户界面对象是图形窗口的子对象,线条、文本、曲面、贴片和图像对象是坐标轴对象的子对象。 MATLAB 7.X程序设计
6.4.2 图形对象的建立 1 图形窗口对象 • figure:建立新的图形窗口的函数h=figure(PropertyName1, PropertyValue1,PropertyName2, PropertyValue2,…) 功能:建立图形窗口并设置指定属性的属性值,将句柄值赋给句柄变量h。其中PropertyName, PropertyValue(即属性名,属性值)构成属性二元对,该属性二元对还可以用结构数组表示。 MATLAB 7.X程序设计
例6-44建立一个图形窗口。该图形窗口有菜单条,名称为“This is the first figure.”,大小为300×300像素点,背景颜色为红色,鼠标键按下响应事件为在该图形窗口绘制出的正弦曲线。 • 例6-45创建一个窗口,背景为红色,没有菜单条,窗口的左下角在屏幕的(0,0)位置,宽度、高度分别为300、400(单位:像素) MATLAB 7.X程序设计
figure 或 h =figure 功能:按默认的属性值建立图形窗口。 要关闭图形窗口,使用close函数,调用格式为: • close(h) 功能:关闭句柄为h的图形窗口。 • close all 功能:关闭所有的图形窗口。 注意clf命令则是清除当前图形窗口的内容,但不关闭窗口。 MATLAB 7.X程序设计
2 坐标轴对象 axes:建立坐标轴对象 • a=axes(PropertyName1, PropertyValue1,PropertyName2, PropertyValue2,…) 功能:用指定的属性在当前图形窗口创建坐标轴,并将其句柄值赋给句柄变量a。 • axes 或a=axes 功能:按默认的属性值在当前图形窗口创建坐标轴。 MATLAB 7.X程序设计
3 曲线对象 line:建立曲线对象 • L=line(x,y,z,PropertyName1, PropertyValue1,PropertyName2, PropertyValue2,…) 功能:绘制曲线,并将句柄值赋给句柄变量L,其中x,y,z的含义与高层绘图函数plot和plot3等一样。 MATLAB 7.X程序设计
例6-46绘制正弦曲线,并分别用元胞数组和构架数组设置对象属性。例6-46绘制正弦曲线,并分别用元胞数组和构架数组设置对象属性。 MATLAB 7.X程序设计
4 文字对象 text:建立文字对象的函数 • t=text(x,y,z,'说明文字',PropertyName1, PropertyValue1,PropertyName2, PropertyValue2,…) 功能:在指定位置和以指定的属性值添加文字说明,并保存句柄值为t。说明文字中除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符。 MATLAB 7.X程序设计
例6-47利用曲线对象绘制正弦、余弦曲线,并利用文字对象完成标注。例6-47利用曲线对象绘制正弦、余弦曲线,并利用文字对象完成标注。 MATLAB 7.X程序设计
5 曲面对象 surface:建立曲面对象 • s=surface(x,y,z,PropertyName1, PropertyValue1,PropertyName2, PropertyValue2,…) 功能:建立句柄值为s的曲面对象。其中对x,y,z的含义与曲面绘制函数mesh和surf等一样。 MATLAB 7.X程序设计
例6-48利用曲面对象绘制三维曲面 MATLAB 7.X程序设计
6.4.3 对象句柄的获取方法 句柄值的获取方法: 1)追溯法获取句柄 • h_pa=get(h_known,’parent’) 功能:获取h_known的父对象句柄值,并赋给h_pa。 • h_ch=get(h_known,’children’) 功能:获取h_known的子对象的句柄值,并赋给h_ ch。 MATLAB 7.X程序设计
2)当前对象句柄的获取 • Hf_fig=gcf 功能:返回当前图形窗口的句柄值,并赋给Hf_fig • Ha_ax=gca • 功能:返回当前图形的当前坐标轴的句柄值,并赋给Ha_ax。 • Hx_obj=gco • 功能:获取当前对象的句柄值,并赋给Hx_obj。 • Hx_obj=gco(Hf_fig) • 功能:返回句柄值为Hf_fig的图形中当前对象的句柄值。 MATLAB 7.X程序设计
3) 根据对象特性获取句柄 findobj 函数是根据对象特性获取句柄的一种重要方法。调用格式如下: • h=findobj(h-ori,PropertyName, PropertyValue) • h=findobj PropertyName, PropertyValue,…) 功能:获取根和根以下以属性二元对(PropertyName, PropertyValue)指定属性值的对象的句柄值,并赋给h。 MATLAB 7.X程序设计
H= findobj 功能:获取根对象和所有子对象的句柄值,并赋给H。 • H= findobj (ObjectHandles) • 功能:获取句柄为ObjectHandles对象中列出的对象和它们的子对象的句柄值,并赋给H。 MATLAB 7.X程序设计
例6-49绘制三维网格图,并用追溯法返 回图形窗的句柄。 MATLAB 7.X程序设计
6.4.4 对象属性的获取和设置 句柄图形建立后,应用函数get和set获取和设置对象的属性。 • get(h_obj) 获取句柄对象所有属性的当前值 • get(h_obj, 'PropertyName') 获取句柄对象h_obj的属性名为PropertyName的当前值 • set(h_obj) 显示句柄对象所有属性和属性值。 MATLAB 7.X程序设计
set(h_obj, 'PropertyName') 设置句柄对象指定属性名的属性值 • set(h_obj, 'PropertyName', ' PropertyValue ') • 设置句柄对象指定属性名的属性值 • set(h_obj, 'PropertyStructure') • 用结构数组设置句柄对象指定属性的属性值 MATLAB 7.X程序设计
get(h_obj, 'DefaultObjectTypePropertyName') 获取对象属性的默认值 • set(h_obj, 'DefaultObjectTypePropertyName', PropertyValue) • 设置属性的用户定义默认值 • set(h_obj, 'DefaultObjectTypePropertyName', 'Remove') • 删除属性的用户定义默认值 MATLAB 7.X程序设计
例6-50(续例6-45)获取句柄为h_fig为图形对象属性,将窗口的背景设置为白色背景。例6-50(续例6-45)获取句柄为h_fig为图形对象属性,将窗口的背景设置为白色背景。 • 例6-51绘制曲线y=1-sinxcosx,并设置曲线颜色为红色,宽度为3像素,窗口背景为绿色。 • 例6-52在同一个图形窗口以不同的坐标轴分别绘制正弦曲线和余弦曲线,并对曲线注释。 MATLAB 7.X程序设计
6.5 图形用户界面 6.5.1 图形用户界面对象层次结构 图形用户界面(Graphical User Interfaces,GUI): • 由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面。 • 用户通过鼠标或键盘选择、激活这些图形对象,使计算机产生某种动作或变化。 • MATLAB中设计图形用户界面的方法有两种:使用可视化的界面环境和通过编写程序。 • 用户菜单、用户控件和对话框是和坐标轴处于同一层次的,都是图形窗口的子对象。 MATLAB 7.X程序设计
6.5.2用户菜单 1 自定义的用户菜单 • unimenu: 自定义的用户菜单的建立函数Hm=unimenu(Hp,PropertyName1,PropertyValue1,PropertyName2,PropertyValue2,…) 功能:创建句柄值为Hm的自定义的用户菜单。其中Hp为其父对象的句柄,PropertyName和PropertyValue构成属性二元对,定义用户菜单的属性。 MATLAB 7.X程序设计
菜单对象除具有Children(子对象),Parent(父对象),Tag(标签),Type(类型),UserData(用户数据),Enable(使能)和 Visible(可见性)等公共属性,还有一些常用的特殊属性,如回调(callback)属性和菜单名(label)。 另外,用户菜单的外观有四个属性:Position(位置),Separator(分隔线),checked(检录符)和ForeGroundColor(前景颜色)。 MATLAB 7.X程序设计
因调用方法的不同,该函数也可以用于建立一级菜单项和子菜单项。因调用方法的不同,该函数也可以用于建立一级菜单项和子菜单项。 • 建立一级菜单项的函数调用格式为: 一级菜单项句柄=uimenu(图形窗口句柄,PropertyName,PropertyValue,…) • 建立子菜单项的函数调用格式为: 子菜单项句柄=uimenu(一级菜单项句柄,PropertyName,PropertyValue,…) • 图形窗的标准菜单可以通过属性MenuBar隐藏和恢复。 MATLAB 7.X程序设计
例6-53隐藏和恢复句柄值为H_fig的图形窗口的标准菜单的显示。例6-53隐藏和恢复句柄值为H_fig的图形窗口的标准菜单的显示。 • 例6-54在图形窗口的标准菜单基础上增加Color菜单,该菜单有设置图形窗背景颜色分别为蓝色或绿色的两个选择项。 MATLAB 7.X程序设计
2 快捷菜单 用uicontextmenu函数和图形对象的UIContextMenu属性来建立快捷菜单,具体步骤为: • 1)利用uicontextmenu函数建立快捷菜单,格式为: hc=uicontextmenu 功能:建立快捷菜单,并将句柄值赋给变量hc。 MATLAB 7.X程序设计
2) 利用uimenu函数为快捷菜单建立菜单项,格式为: uimenu(‘快捷菜单名’,PropertyName, PropertyValue,...) 功能:为创建的快捷菜单赋值,其中PropertyName和PropertyValue构成属性二元对。 • 3) 利用set函数将该快捷菜单和某图形对象联系起来。 MATLAB 7.X程序设计
例6-55绘制曲线y=1-sin(x)cos(x),并建立控制曲线的线型和曲线宽度的快捷菜单。例6-55绘制曲线y=1-sin(x)cos(x),并建立控制曲线的线型和曲线宽度的快捷菜单。 MATLAB 7.X程序设计
6.5.3 对话框 1创建对话框 • 创建对话框的函数是dialog,调用格式为: H=dialog(PropertyName,PropertyValue,…) 功能:创建句柄变量为H 的对话框。 • 常用的属性有ButtonDownFcn(鼠标按下调用函数),Colormap(色图),Color(颜色),HandleVisibility(句柄可视性),IntegerHandle(集成句柄), MenuBar(菜单条),NumberTitle(编号标题),PaperPositionMode(位置模式), Visible(可视性)和WindowStyle(窗口类型)等。 MATLAB 7.X程序设计
例6-57创建可视的无菜单的对话框,按下鼠标左键关闭该对话框。例6-57创建可视的无菜单的对话框,按下鼠标左键关闭该对话框。 MATLAB 7.X程序设计
2 输入信息对话框 输入对话框为用户的输入信息提供了界面,使用inputdlg函数创建,调用格式为: • answer=inputdlg(prompt,name,numlines,defaultanswer,addopts) • 功能:创建输入对话框。 • 其中answer为以元胞数组形式返回用户的输入信息;prompt为提示信息字符串的元胞数组;name为对话框的标题字符串,用引号括起来,可以省略;numlines用于指定输入值的行数,可以省略;defaultanswer为输入项的默认值,用引号括起来,是元胞数组可以省略;addopts指定对话框的选择,如是否可以改变大小,有无模式对话框等。 MATLAB 7.X程序设计
例6-58设计矩阵输入的对话框。 MATLAB 7.X程序设计
3 输出信息对话框 输出信息对话框为系统的输出信息界面,使用msgbox函数创建。msgbox的调用格式为: • h=msgbox(message,title,icon,icondata,iconcmap,CreateMode) • 功能:创建输出信息对话框。其中h为输出对话框的句柄,message为显示的信息,可以是字符串或数组;title为标题;icon为显示的图标,可取值为none(无图标),error(出错图标),help (帮助图标),warn(警告图标)或custom (自定义图标);当使用custom时,用icondata定义图标的数据,用iconcmap定义图标的颜色映象;CreateMode为对话框的产生模式可省略,取值为modal(有模式),replace(无模式可代替同名的对话框)和non-modal(默认为无模式)。 MATLAB 7.X程序设计
错误信息对话框函数errordlg,调用格式为: • h=errordlg(ErrorString,DlgName,CreateMode) • 功能:创建错误信息对话框,错误信息为ErrorString,标题为DlgName,CreateMode同上。 另外,警告信息对话框warndlg使用格式同errordlg。 MATLAB 7.X程序设计
例6-59设计输出信息对话框。 • 例6-60设计错误信息对话框。 MATLAB 7.X程序设计
4 帮助信息对话框 创建帮助信息对话框函数是helpdlg,调用格式为: • HANDLE = helpdlg (HELPSTRING,DLGNAME) • 功能:创建帮助信息对话框。其中,帮助信息为HELPSTRING,标题为DlgName。 • 例6-61设计帮助信息对话框。 MATLAB 7.X程序设计
5 选择对话框 创建选择对话框函数是questdlg,调用格式为: • button = questdlg('qstring','title','str1','str2','str3','default') • 功能:创建选择对话框。其中qstring 为问题信息,包含三个选择项str1,str2和str3,default指定默认的选择项。 MATLAB 7.X程序设计
例6-62设计选择信息对话框。 MATLAB 7.X程序设计
6 文件管理对话框 建立打开文件对话框的函数为uigetfile,调用格式为: • [FileName,PathName]=uigetfile(FiltrEspec,Title,x,y) • [FileName,PathName]=uigetfile(FiltrEspec,Title,'Location', [X Y] ) • 功能:创建打开文件对话框。其中,FileName和PathName分别为返回的文件名和路径,可省略,如果按“取消”按钮或发生错误,都返回0;FiltrEspec指定初始时显示的文件名,可以用通配符“*”表示,当省略时,则自动列出当前路径下的所有“*.m”文件和目录;Title为对话框标题,可省略;x、y分别指定对话框在屏幕上的位置(到屏幕左上角的距离),单位是像素,可省略。 MATLAB 7.X程序设计
uiputfile函数用于建立保存文件对话框,调用格式为: • [FileName,PathName]=uiputfile(FiltrEspec,Title,x,y) • [FileName,PathName]= uiputfile(FiltrEspec,Title,'Location',[X Y] ) 参数定义与uigetfile相同。 MATLAB 7.X程序设计
例6-63建立打开文件对话框。 • 例6-64建立保存文件对话框。 MATLAB 7.X程序设计
6.5.4 用户控件 建立控件对象的函数为uicontrol,调用格式为: • 对象句柄=uicontrol(图形窗口句柄,PropertyName,PropertyValue,…) • 功能:建立用户控件对象。其中各个属性名及可取的值和前面介绍的uimenu函数相似。 MATLAB 7.X程序设计
控件名 PropertyName • 按钮PushButton 响应鼠标单击动作,按钮上有说明其作用的说明文字 • 切换按钮 ToggleButton 单击时呈凹凸状态,可用于切换 • 单选按钮 RadioButton 单击时呈黑白点状态,可用于切换,总是成组出现,多个单选按钮互斥,一组中只有一个被选中 • 复选框CheckBox 单击时用√切换,有选中、不选中和不确定等状态,总是成组出现,多个复选框可同时选用 • 文本框 EditText 凹形方框,可输入和编辑单行和多行文字,并显示出来 MATLAB 7.X程序设计
静态文本框StaticText 显示文字信息,但不接受输入 • 滚动条Slider 用图示的方式显示在一个范围内数值范围,可以通过移动滚动条改变数值 • 框架Frame 将一组控件围在框架中 • 列表框 ListBox 下拉文字列表,可以从列表中选择一项和多项 • 弹出式菜单PopupMenu 文本框和列表框的组合,可以从下拉列表中选择 • 坐标轴Axes 绘制坐标轴 MATLAB 7.X程序设计
例6-65编写函数x=asint,y=bcost的三维绘图的界面程序,其中a,b由键盘输入。例6-65编写函数x=asint,y=bcost的三维绘图的界面程序,其中a,b由键盘输入。 MATLAB 7.X程序设计
6.6 图形用户界面设计工具 6.6.1 图形用户界面设计工具的启动 图形用户界面设计工具的启动方式: 1)命令方式 图形用户界面GUI设计工具的启动命令为guide,格式为: • guide 功能:启动GUI设计工具,并建立名字为untitled1.fig的图形用户界面。 • guide FN 功能:启动GUI设计工具,并打开已建立的图形用户界面FN。 MATLAB 7.X程序设计
2) 菜单方式 在MATLAB的主窗口中,选择File菜单中的New菜单项,再选择其中的GUI命令,就会显示GUI的设计模板。 4种模板分别是: • Blank GUI(Default)(空白模板,默认) • GUI with Uicontrols(带控件对象的GUI模板) • GUI with Axes and Menu(带坐标轴与菜单的GUI模板) • Modal Question Dialog(带模式问题对话框的GUI模板)。 当用户选择不同的模板时,在GUI设计模板界面的右边就会显示出与该模板对应的GUI图形。 MATLAB 7.X程序设计
图形用界面设计工具启动时模板选择对话框 MATLAB 7.X程序设计