MATLAB图形用户界面编程ppt课件
MATLAB程序设计基础,图形用户界面编程,MATLAB图形界面中各对象关系,根对象 root,图形窗口对象 figure,右键菜单对象 uicontextmenu,菜单对象 uimenu,控件对象 uicontrol,坐标轴对象 axes,线对象 line,文字对象 text,表面图对象 surface,图像对象 image,光源对象 light,窗口对象及其属性设定,窗口对象的建立hwin=figure(属性1,属性值1,属性2,属性值2,)hwin为图形窗口的句柄,matlab环境允许打开多个窗口,每个窗口都对应自己的句柄,通过该句柄可以进一步对窗口的属性等进行操作。hwin=gcf获得当前窗口的句柄。,图形窗口的属性,常用属性color属性由红绿蓝三原色组成,取值范围为0到1。menubar属性设置菜单条的形式。name属性设置图形窗口的标题栏中标题内容,其属性值为一字符串。numbertitle属性是否显示图形窗口标题栏中的图形标号。units属性设定图形单位。如:pixels(象素点)、inches(英寸)、centimeters(厘米)、normalized(归一值)等,position属性设定窗口的位置和大小,为1×4向量,前两个值为窗口左下角横纵坐标值,后两个元素值为窗口的宽度和高度,其单位由units属性设定。resize属性确定是否可以改变图形窗口的大小。toolbar属性是否显示工具条。visible属性决定窗口是否为可见。Pointer属性设置鼠标的显示形式。,对象属性的修改,改变对象的属性值set(对象句柄,属性1,属性值1,属性2,属性值2,)属性的名称用单引号括起来;如果不给出属性值,则返回全部允许的属性值。 获得对象的属性值V=get(句柄名,属性),?gwin=figure('visible','off'); ?set(gwin,'color',1,0,0,'position',100,200,300,300,. 'name','My program','numbertitle','off','menubar','none'); ?set(gwin,'visible','on'),回调函数(callback function),CloseRequestFcn关闭窗口时响应函数 KeyPressFcn键盘按下时响应函数 windowButtonDownFcn-鼠标按下时响应函数 WindowButtonMotionFcn-鼠标移动时响应函数 CreateFcn和DeleteFcn-建立和删除对象时响应函数 CallBack-对象被选中时响应函数,?gwin=figuregwin =1?set(gwin,'windowbuttondownfcn','helpdlg(''mouse button down!'')') ?set(gwin,'keypressfcn','helpdlg(''keyboard pressed!'')'),一旦该对象指定的事件发生,将自动调用某指定的函数,它可以是matlab文件,也可以是一组matlab程序。,标准对话框及其调用,文件名操作函数uigetfile()和uiputfile()函数打开一个文件进行读、写的对话框。fname,pname=uigetfile(ffilter,strtitle,x,y)ffilter为文件名过滤器;strtiltle为对话框窗口标题栏的显示内容;x、y为对话框出现的位置,省略则采用默认位置。,?f,p=uigetfile('*.m;*.txt','请选择一个文件')f =fileprint.mp =E:MATLABR11work,颜色设置对话框c=uisetcolor; 或 c=uisetcolor(c0);函数返回一个1×3的颜色向量,分别对应红、绿、蓝三原色,按下“取消”按钮后返回空的向量;如果给出向量c0,则在图中指向c0所定义的颜色位置,且按下“取消”按钮时返回c0的值。,字体设置对话框h_Font=uisetfont 或 h_Font=uisetfont(h_Text,strTitle)h_Font为字体属性的结构体;h_Text为要设置的字符句柄,strTitle为对话框的标题栏内容。,?s=uisetfont s = FontName: '楷体_GB2312'FontUnits: 'points'FontSize: 42FontWeight: 'bold'FontAngle: 'normal',警告与错误信息对话框warndlg和 errordlg函数二者的显示图标不同。例:?h=warndlg(error:,code 1111.,Warning)?h=errordlg('error:','code 1111.','Error'),帮助信息对话框与警告、错误信息对话框基本一致,仅仅是图标的不同。例:?h=helpdlg('帮助信息:','帮助信息对话框和警告错误对话框基本一致,只是图标不同!','帮助'),通用信息框msgbox(显示信息,标题,图标)图标包括:Error、Help、Warn以及Custom,如果缺省则为None。?data=1:64;data=(data'*data)/64;?msgbox('This is an example of msgbox!','custom ico','custom',data,hot(64),Matlab图形界面基本控件,静态文本text一般用来作为信息提示用。 编辑框edit读取用户数据的文字窗口。 框架 frame概括一组控件,也可以修饰用。 列表框list包含多个选项供用户选择。,滚动条slider图示某个范围。 按钮pushbutton其上的字符说明其作用。 切换按钮toggle两状态按钮,单击改变其状态。 收音机按钮radio一组选项,其中只能有一个被选中。 检取框check一组选项,可以选择多项。 弹出式菜单popup选中时打开一个列表。,控件的常用属性,Units与position属性意义同上,这里的位置是相对该窗口的左下角; String属性标注在控件上,用来说明或提示; Callback属性实现该控件的实质性功能; Enable属性该控件的使能状态on或off,Cdata属性真彩色位图,为一三维数组,用于美化界面; Tooltipstring属性鼠标指针位于该控件时的提示信息显示; Interruptable属性是否中断当前回调函数的执行,on或off 字体属性设置字体,例1:,h_main=figure(name,a demo of gui design,menubar,none,'numbertitle','off','position',100 100 300 100); h_edit=uicontrol('style','edit','backgroundcolor',1 1 1,'position',20 20 50 20,.'tag','myedit','string','1','horizontalalignment','left'); h_but1=uicontrol('style','pushbutton','position',20 50 50 20,'string','INC',.'callback','v=eval(get(h_edit,''string'');',.'set(h_edit,''string'',int2str(v+1);'); h_but2=uicontrol('style','pushbutton','position',80 50 50 20,'string','DEC',.'callback','v=eval(get(h_edit,''string'');','set(h_edit,''string'',int2str(v-1);');,function gui_counter1() %gui_counter is a demo of gui design. h_main=figure('name','a demo of gui design','menubar','none',.'numbertitle','off','position',100 100 300 100); h_edit=uicontrol('style','edit','backgroundcolor',1 1 1,'position',20 20 50 20,.'tag','myedit','string','1','horizontalalignment','left'); h_but1=uicontrol('style','pushbutton','position',20 50 50 20,'string','INC',.'callback','h=findobj(gcf,''tag'',''myedit'');','v=eval(get(h,''string'');',.'set(h,''string'',int2str(v+1);'); h_but2=uicontrol('style','pushbutton','position',80 50 50 20,'string','DEC',.'callback','h=findobj(gcf,''tag'',''myedit'');','v=eval(get(h,''string'');',.'set(h,''string'',int2str(v-1);');,例2,function gui_demo() %GUI_demo is another demo of GUI design. h_main=figure('units','normalized','position',0.3 0.3 0.5 0.4,.'name','GUI demostration','numbertitle','off'); h_axis=axes('units','normalized','position',0.3 0.15 0.6 0.7,.'tag','axplot','xlim',0 10,'ylim',-1 1); t=0:0.1:10;y=sin(t);line(t,y); bmp1=imread('1.bmp');bmp2=imread('2.bmp'); bmp3=imread('3.bmp');bmp4=imread('4.bmp'); h_1=uicontrol('style','pushbutton','units','normalized',.'position',0.1 0.6 0.06 0.1,'cdata',bmp1,.'callback','zoom on','tooltipstring','Enable zooming'); h_2=uicontrol('style','pushbutton','units','normalized',.'position',0.04 0.45 0.06 0.1,'cdata',bmp2,.'callback','zoom xon','tooltipstring','Enable zoom on x-axis only'); h_3=uicontrol('style','pushbutton','units','normalized',.'position',0.16 0.45 0.06 0.1,'cdata',bmp3,.'callback','zoom yon','tooltipstring','Enable zoom on y-axis only'); h_4=uicontrol('style','pushbutton','units','normalized',.'position',0.1 0.3 0.06 0.1,'cdata',bmp4,.'callback','zoom off','tooltipstring','Disable zooming');,