第7章MATLAB图形用户界面设计.ppt_第1页
第7章MATLAB图形用户界面设计.ppt_第2页
第7章MATLAB图形用户界面设计.ppt_第3页
第7章MATLAB图形用户界面设计.ppt_第4页
第7章MATLAB图形用户界面设计.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

4.5低层绘图操作,4.5.1图形对象及其句柄1.图形对象MATLAB把构成图形的各个基本要素称为图形对象。这些对象包括计算机屏幕、图形窗口(Figure)、坐标轴(Axes)、用户菜单(Uimenu)、用户控件(Uicontrol)、曲线(Line)、曲面(Surface)、文字(Text)、图像(image)、光源(Light)、区域块(Patch)和方框(Rectangle)。系统将每一个对象按树型结构组织起来。每个图形对象都可以被独立地操作。,2.图形对象句柄MATLAB在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄(Handle)。句柄是图形对象的唯一标识符。MATLAB提供了3个用于获取已有图形对象句柄的函数:gcf获取当前图形窗口的句柄(getcurrentfigure)。gca获取当前坐标轴的句柄(getcurrentaxis)。gco获取最近被单击的图形对象的句柄(getcurrentobject)。,4.5.2图形对象属性1.属性名与属性值MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值。例如,LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是-、:、-.、-或none。2.属性的操作设置对象属性set函数的调用格式为:set(句柄,属性名1,属性值1,属性名2,属性值2,)获取对象属性的属性值get函数的调用格式为:V=get(句柄,属性名),4.5.3图形对象的创建1.图形窗口对象建立图形窗口对象使用figure函数。调用该函数的命令形式为:句柄变量=figure(属性名1,属性值1,属性名2,属性值2,)MATLAB为每个图形窗口提供了很多属性。这些属性及其取值控制着图形窗口对象。除公共属性外,其他常用属性:MenuBar属性、Name属性、Position属性、Color属性等。,例4.25建立一个图形窗口。该图形窗口没有菜单条,标题名称为“图形窗口示例”,起始于屏幕左下角、宽度和高度分别为300像素点和150像素点,背景颜色为绿色,且当用户从键盘按下任意一个键时,将显示“Hello,KeyboardKeyPressed.”字样。命令如下:hf=figure(Color,0,1,0,Position,1,1,300,150,.Name,图形窗口示例,NumberTitle,off,MenuBar,none,.KeyPressFcn,disp(Hello,KeyboardKeyPressed.);,例4.26分别在4个不同的图形窗口绘制出正弦、余弦、正切、余切曲线。要求先建立一个图形窗口并绘图,然后每关闭一个再建立下一个,直到建立第4个窗口并绘图。程序如下:x=linspace(0,2*pi,60);y=sin(x);z=cos(x);t=tan(x);ct=1./(t+eps);%命令组待用C4=figure(Name,cotangent(x),NumberTitle,.off);plot(x,ct);axis(0,2*pi,-40,40);C3=figure(Name,tangent(x),DeleteFcn,C4,.NumberTitle,off);plot(x,t);axis(0,2*pi,-40,40);C2=figure(Name,cos(x),DeleteFcn,C3,.NumberTitle,off);plot(x,z);axis(0,2*pi,-1,1);%先创建1个图形窗口并绘制曲线figure(Name,sin(x),DeleteFcn,C2,NumberTitle,off);plot(x,y);axis(0,2*pi,-1,1);,2.坐标轴对象建立坐标轴对象使用axes函数,调用它的命令形式为:句柄变量=axes(属性名1,属性值1,属性名2,属性值2,)MATLAB为每个坐标轴对象提供了很多属性。除公共属性外,还有其他常用属性。,例4.27利用坐标轴对象实现图形窗口的任意分割。程序如下:clf;%清图形窗口x=linspace(0,2*pi,20);y=sin(x);axes(Posi,0.2,0.2,0.2,0.7);plot(y,x);title(sin(x)-1);axes(Posi,0.4,0.5,0.2,0.1);stairs(x,y);title(sin(x)-2);axes(Posi,0.55,0.6,0.25,0.3);stem(x,y);title(sin(x)-3);axes(Posi,0.55,0.2,0.25,0.3);stem(x,y);title(sin(x)-4);,3.曲线对象建立曲线对象使用line函数,调用它的命令形式为:句柄变量=line(x,y,z,属性名1,属性值1,属性名2,属性值2,)其中,对x,y,z的解释与高层曲线函数plot和plot3等一样,其余的解释与前面介绍过的figure和axes函数类似。每个曲线对象也具有很多属性。除公共属性外,还有其他常用属性。,4.文字对象使用text函数可以根据指定位置和属性值添加文字说明,并保存句柄。调用该函数的命令形式为:句柄变量=text(x,y,z,说明文字,属性名1,属性值1,属性名2,属性值2,)其中,说明文字中除使用标准的ASCII字符外,还可使用LATEX格式的控制字符。除公共属性外,文字对象还有其他常用属性。,例4.28利用曲线对象完成例4.5。程序如下:x=(0:pi/100:2*pi);y1=2*exp(-0.5*x)*1,-1;y2=2*exp(-0.5*x).*sin(2*pi*x);x1=(0:12)/2;y3=2*exp(-0.5*x1).*sin(2*pi*x1);line(x,y1,LineStyle,:,color,g);line(x,y2,LineStyle,-,color,b);line(x1,y3,LineStyle,none,Marker,p,color,r);title(曲线及其包络线);xlabel(independentvariableX);ylabel(independentvariableY);text(2.8,0.55,2e-0.5x,FontSize,12);text(0.45,0.55,y=2e-0.5xsin(2pix),FontSize,12);text(1.4,0.1,离散数据点);legend(包络线,包络线,曲线y,离散数据点),5.曲面对象建立曲面对象使用surface函数,调用它的命令形式为:句柄变量=surface(x,y,z,属性名1,属性值1,属性名2,属性值2,)其中对x,y,z的解释与高层曲面函数mesh和surf等一样,其余的解释与前面介绍过的figure和axes等函数类似。每个曲面对象也具有很多属性。除公共属性外,还有其他常用属性。,例4.29利用曲面对象绘制三维曲面z=sin(y)cos(x)。程序如下:x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);axes(view,-37.5,30);hs=surface(x,y,z,FaceColor,w,EdgeColor,flat);gridon;xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(mesh-surf);pause;set(hs,FaceColor,flat);,第7章MATLAB图形用户界面设计,7.1菜单设计7.2对话框设计7.3用户界面设计工具,7.1菜单设计,7.1.1用户菜单的建立建立一级菜单项的函数调用形式为:一级菜单项句柄=uimenu(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,)建立子菜单项的函数调用形式为:子菜单项句柄=uimenu(一级菜单项句柄,属性名1,属性值1,属性名2,属性值2,),例如:hm=uimenu(gcf,Label,File);hm1=uimenu(hm,Label,Save);hm2=uimenu(hm,Label,Saveas);,7.1.2菜单对象常用属性菜单对象具有Children、Parent、Tag、Type、UserData、Visible等公共属性。除公共属性外,还有一些常用的特殊属性。,例7.1建立“图形演示系统”菜单。菜单条中含有3个菜单项:Plot、Option和Quit。Plot中有SineWave和CosineWave两个子菜单项,分别控制在本图形窗口画出正弦和余弦曲线。Option菜单项的内容如图7.1所示。其中Gridon和Gridoff控制给坐标轴加网格线,Boxon和Boxoff控制给坐标轴加边框,而且这4项只有在画有曲线时才是可选的。FigureColor控制图形窗口背景颜色。Quit控制是否退出系统。,程序如下:screen=get(0,ScreenSize);W=screen(3);H=screen(4);figure(Color,1,1,1,Position,0.2*H,0.2*H,0.6*W,0.4*H,.Name,图形演示系统,NumberTitle,off,MenuBar,none);%定义Plot菜单项hplot=uimenu(gcf,Label,%定义Option菜单项hoption=uimenu(gcf,Label,7.1.3快捷菜单在MATLAB中,可以使用uicontextmenu函数和图形对象的UIContextMenu属性来建立快捷菜单,具体步骤为:(1)利用uicontextmenu函数建立快捷菜单。(2)利用uimenu函数为快捷菜单建立菜单项。(3)利用set函数将该快捷菜单和某图形对象联系起来。,例7.2绘制曲线y=2e-0.5xsin(2x),并建立一个与之相联系的快捷菜单,用以控制曲线的线型和曲线宽度。程序如下:x=0:pi/100:2*pi;y=2*exp(-0.5*x).*sin(2*pi*x);hl=plot(x,y);hc=uicontextmenu;%建立快捷菜单hls=uimenu(hc,Label,线型);%建立菜单项hlw=uimenu(hc,Label,线宽);uimenu(hls,Label,虚线,Call,set(hl,LineStyle,:););uimenu(hls,Label,实线,Call,set(hl,LineStyle,-););uimenu(hlw,Label,加宽,Call,set(hl,LineWidth,2););uimenu(hlw,Label,变细,Call,set(hl,LineWidth,0.5););set(hl,UIContextMenu,hc);%将快捷菜单和曲线对象联系起来,7.2对话框设计,7.2.1对话框的控件(1)按钮(PushButton)。(2)双位按钮(ToggleButton)。(3)单选按钮(RadioButton)。(4)复选框(CheckBox)。(5)列表框(ListBox)。(6)弹出框(PopupMenu)。(7)编辑框(EditBox)。(8)滑动条(Slider)。(9)静态文本(StaticText)。(10)边框(Frame)。,7.2.2对话框的设计1.建立控件对象MATLAB提供了用于建立控件对象的函数uicontrol,其调用格式为:对象句柄=uicontrol(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,)其中各个属性名及可取的值和前面介绍的uimenu函数相似,但也不尽相同,下面将介绍一些常用的属性。2.控件对象的属性MATLAB的10种控件对象使用相同的属性类型,但是这些属性对于不同类型的控件对象,其含义不尽相同。除Children、Parent、Tag、Type、UserData、Visible等公共属性外,还有一些常用的特殊属性。,例7.3建立数制转换对话框。在左边输入一个十进制整数和216之间的数,单击“转换”按钮能在右边得到十进制数所对应的216进制字符串,单击“退出”按钮退出对话框。程序如下:hf=figure(Color,0,1,1,Position,100,200,400,200,.Name,数制转换,NumberTitle,off,MenuBar,none);uicontrol(hf,Style,Text,Units,normalized,.Position,0.05,0.8,0.45,0.1,Horizontal,center,.String,输入框,Back,0,1,1);uicontrol(hf,Style,Text,Position,0.5,0.8,0.45,0.1,.Units,normalized,Horizontal,center,.String,输出框,Back,0,1,1);uicontrol(hf,Style,Frame,Position,0.04,0.33,0.45,0.45,.Units,normalized,Back,1,1,0);uicontrol(hf,Style,Text,Position,0.05,0.6,0.25,0.1,.Units,normalized,Horizontal,center,.String,十进制数,Back,1,1,0);,uicontrol(hf,Style,Text,Position,0.05,0.4,0.25,0.1,.Units,normalized,Horizontal,center,.String,216进制,Back,1,1,0);he1=uicontrol(hf,Style,Edit,Position,0.25,0.6,0.2,0.1,.Units,normalized,Back,0,1,0);he2=uicontrol(hf,Style,Edit,Position,0.25,0.4,0.2,0.1,.Units,normalized,Back,0,1,0);uicontrol(hf,Style,Frame,Position,0.52,0.33,0.45,0.45,.Units,normalized,Back,1,1,0);ht=uicontrol(hf,Style,Text,Position,0.6,0.5,0.3,0.1,.Units,normalized,Horizontal,center,Back,0,1,0);COMM=n=str2num(get(he1,String);,b=str2num(get(he2,String);,.dec=trdec(n,b);,set(ht,string,dec);uicontrol(hf,Style,Push,Position,0.18,0.1,0.2,0.12,.String,转换,Units,normalized,Call,COMM);uicontrol(hf,Style,Push,Position,0.65,0.1,0.2,0.12,.String,退出,Units,normalized,Call,close(hf);,程序调用了trdec.m函数文件,该函数的作用是将任意十进制整数转换为216进制字符串。trdec.m函数文件如下:functiondec=trdec(n,b)ch1=0123456789ABCDEF;%十六进制的16个符号k=1;whilen=0%不断除某进制基数取余直到商为0p(k)=rem(n,b);n=fix(n/b);k=k+1;endk=k-1;strdec=;whilek=1%形成某进制数的字符串kb=p(k);strdec=strcat(strdec,ch1(kb+1:kb+1);k=k-1;enddec=strdec;,例7.4建立图形演示对话框。在编辑框输入绘图命令,单击“绘图”按钮能在左边坐标轴得到所对应的图形,弹出框提供色图控制,列表框提供坐标网格线和坐标边框控制。程序如下:clf;set(gcf,Unit,normalized,Position,0.2,0.3,0.65,0.35);set(gcf,Menubar,none,Name,图形演示,NumberTitle,off);axes(Position,0.05,0.15,0.55,0.7);uicontrol(gcf,Style,text,Unit,normalized,.Posi,0.63,0.85,0.2,0.1,String,输入绘图命令,Horizontal,center);hedit=uicontrol(gcf,Style,edit,Unit,normalized,Posi,0.63,0.15,0.2,0.68,.Max,2);%Max取2,使Max-Min1,从而允许多行输入hpopup=uicontrol(gcf,Style,popup,Unit,normalized,.Posi,0.85,0.8,0.15,0.15,String,Spring|Summer|Autumn|Winter);hlist=uicontrol(gcf,Style,list,Unit,normalized,.Posi,0.85,0.55,0.15,0.25,String,Gridon|Gridoff|Boxon|Boxoff);hpush1=uicontrol(gcf,S

温馨提示

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

评论

0/150

提交评论