《8.6图形用户界面应用举例(ppt).pdf》由会员分享,可在线阅读,更多相关《8.6图形用户界面应用举例(ppt).pdf(23页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、8.6 图形用户界面应用举例 GUIDEGUIDE设计实例设计实例 AppApp DesignerDesigner设计实例设计实例 专题八专题八 MATLABMATLAB图形用户界面设计图形用户界面设计 例例1 1 利用利用GUIDEGUIDE设计工具设计如图所示设计工具设计如图所示 的用户界面。该界面的用户界面。该界面可以显示可以显示表面图、表面图、 网格图网格图和和等高线图。绘制图形的功能通等高线图。绘制图形的功能通 过过3 3个命令按钮来实现个命令按钮来实现,绘制图形所需要绘制图形所需要 的数据通过一个的数据通过一个列表列表来选取。来选取。方位角和方位角和 仰角在视点面板中设置,图形使用
2、的色仰角在视点面板中设置,图形使用的色 图通过下拉列表进行选择,着色方式通图通过下拉列表进行选择,着色方式通 过单选按钮组进行选择。切换按钮用于过单选按钮组进行选择。切换按钮用于 隐藏或显示坐标轴网格。隐藏或显示坐标轴网格。 1. GUIDE1. GUIDE设计实例设计实例 (1 1) 打开图形用户界面设计窗口,添加有关图形对象,并保存图形打开图形用户界面设计窗口,添加有关图形对象,并保存图形 用户界面。用户界面。 .fig.fig文件:包含文件:包含GUIGUI图形窗口及其控件对象的属性描述。图形窗口及其控件对象的属性描述。 .m.m文件:包括文件:包括GUIGUI初始化方法以及图形窗口和控
3、件的回调函数。初始化方法以及图形窗口和控件的回调函数。 1. GUIDE1. GUIDE设计实例设计实例 (1 1) 打开图形用户界面设计窗口,添加有关图形对象,并保存图形打开图形用户界面设计窗口,添加有关图形对象,并保存图形 用户界面。用户界面。 1. GUIDE1. GUIDE设计实例设计实例 用“用“Blank GUI” Blank GUI” 模板新建模板新建 用户界面。用户界面。 添加控件。添加控件。 保存用户界面。保存用户界面。 .fig.fig文件文件 .m.m文件文件 (2 2)利用属性检查器设置界面对象的属性。)利用属性检查器设置界面对象的属性。 StringString属性:
4、用于指定控件上的文本以属性:用于指定控件上的文本以 及列表框和弹出式菜单的选项。及列表框和弹出式菜单的选项。 TagTag属性:定义控件标识。属性:定义控件标识。 ValueValue属性:控件的值。属性:控件的值。 1. GUIDE1. GUIDE设计实例设计实例 (3 3)利用对齐对象工具,调整控件对象的相对位置。)利用对齐对象工具,调整控件对象的相对位置。 1. GUIDE1. GUIDE设计实例设计实例 (4 4)编写代码,实现控件功能。)编写代码,实现控件功能。 .m.m文件中回调函数框架文件中回调函数框架 控件控件Tag_CallTag_Call类型类型( (hObjecthObj
5、ect, , eventdataeventdata, handles), handles) 其中,其中,hObjecthObject 为发生事件的源控件,为发生事件的源控件,eventdataeventdata为事件数据结为事件数据结 构,构,handleshandles为对象句柄集。为对象句柄集。 1. GUIDE1. GUIDE设计实例设计实例 跟图形窗口有关的有跟图形窗口有关的有3 3个函数个函数 _ _OpeningFcnOpeningFcn函数:可以在这个函数内完成数据初始化设置、函数:可以在这个函数内完成数据初始化设置、GUIGUI 的界面的控制和调整等工作。的界面的控制和调整等工
6、作。 _ _OutputFcnOutputFcn函数:用于控制输出运行结果。函数:用于控制输出运行结果。 _Callback_Callback函数:用于控制窗口的默认事件,即单击窗口空白区函数:用于控制窗口的默认事件,即单击窗口空白区 域的触发行为。域的触发行为。 1. GUIDE1. GUIDE设计实例设计实例 为图形窗口的打开事件编写响应代码。为图形窗口的打开事件编写响应代码。 handles.peakshandles.peaks=peaks(34);=peaks(34); handles.membranehandles.membrane=membrane;=membrane; x,yx,
7、y=meshgridmeshgrid( (- -8:0.3:8);8:0.3:8); r=r=sqrtsqrt(x.2+y.2);(x.2+y.2); sincsinc=sin(r)./(=sin(r)./(r+epsr+eps);); handles.sinchandles.sinc= =sincsinc; ; handles.current_datahandles.current_data= =handles.sinchandles.sinc; ; colormapcolormap(spring);(spring); 1. GUIDE1. GUIDE设计实例设计实例 为为3 3个绘图按钮编
8、写响应代码个绘图按钮编写响应代码。 在在Mseh_CallbackMseh_Callback函数体中添加以下代码。函数体中添加以下代码。 mesh(mesh(handles.current_datahandles.current_data) ) 在在Surf_CallbackSurf_Callback函数体中添加以下代码。函数体中添加以下代码。 surf(surf(handles.current_datahandles.current_data) ) 在在Contour3_CallbackContour3_Callback函数体中添加以下代码。函数体中添加以下代码。 contour3(cont
9、our3(handles.current_datahandles.current_data) ) (4 4)编写代码,实现控件功能。)编写代码,实现控件功能。 1. GUIDE1. GUIDE设计实例设计实例 为切换按钮编写响应代码。为切换按钮编写响应代码。 if if hObject.ValuehObject.Value=1=1 grid ongrid on hObject.StringhObject.String=隐藏网格隐藏网格; else else grid offgrid off hObject.StringhObject.String=显示网格显示网格; endend (4 4)编
10、写代码,实现控件功能。)编写代码,实现控件功能。 1. GUIDE1. GUIDE设计实例设计实例 为列表框(为列表框(ChooseFunChooseFun)编写响应代码。)编写响应代码。 strstr= =hObject.StringhObject.String; ; valval= =hObject.ValuehObject.Value; ; switch switch strtrimstrtrim( (strstr valval) case Peaks case Peaks handles.current_datahandles.current_data= =handles.peaksh
11、andles.peaks; ; case Membrane case Membrane handles.current_datahandles.current_data= =handles.membranehandles.membrane; ; case case SincSinc handles.current_datahandles.current_data= =handles.sinchandles.sinc; ; endend guidataguidata( (hObject,handleshObject,handles) ) 为色图弹出式菜单编写响应代码。为色图弹出式菜单编写响应代码
12、。 strstr= =hObject.StringhObject.String; ; cm=cm=hObject.ValuehObject.Value; ; colormapcolormap( ( evaleval( (strstrcm) );cm) ); 为视点设置按钮编写响应代码。为视点设置按钮编写响应代码。 el=el=evaleval( (handles.edit_el.Stringhandles.edit_el.String);); azaz= =evaleval( (handles.edit_az.Stringhandles.edit_az.String);); view(view
13、(az,elaz,el) ) 为着色方式按钮组为着色方式按钮组ChooseShadingChooseShading的的SelectionChangedSelectionChanged事件编写事件编写 响应代码。响应代码。 switch switch eventdata.NewValue.Tageventdata.NewValue.Tag case case rb_flatrb_flat shading flat;shading flat; case case rb_interprb_interp shading shading interpinterp; ; case case rb_face
14、tedrb_faceted shading faceted;shading faceted; end end (5 5)运行图形用户界面)运行图形用户界面 1. GUIDE1. GUIDE设计实例设计实例 例例2 2 生成一个用于观察周期信号波形叠加效果的程序模块。该应用生成一个用于观察周期信号波形叠加效果的程序模块。该应用 程序可以观察不同振幅比、相位差的基波和程序可以观察不同振幅比、相位差的基波和3 3次谐波的叠加波形,此次谐波的叠加波形,此 外还可以在信号中加入白噪声。右边的仪表显示波形的最大振幅。外还可以在信号中加入白噪声。右边的仪表显示波形的最大振幅。 2. App Designer
15、 2. App Designer 设计实例设计实例 (1 1)打开)打开AppApp DesignerDesigner,添加组件,并调整组件的位置和大小。,添加组件,并调整组件的位置和大小。 保存界面保存界面。 . .mlappmlapp文件文件 2. App Designer 2. App Designer 设计实例设计实例 新建应用程序。新建应用程序。 添加组件。添加组件。 (2 2)利用属性面板设置组件对象的属性。)利用属性面板设置组件对象的属性。 设置组件的标签。设置组件的标签。 设置坐标轴“启用网格和边框”。设置坐标轴“启用网格和边框”。 2. App Designer 2. App
16、 Designer 设计实例设计实例 (2 2)利用属性面板设置组件对象的属性。)利用属性面板设置组件对象的属性。 设置离散旋钮的项目,并选定第设置离散旋钮的项目,并选定第3 3项。项。 2. App Designer 2. App Designer 设计实例设计实例 (2 2)利用属性面板设置组件对象的属性。)利用属性面板设置组件对象的属性。 设置旋钮的值、最小值、最大值和刻度间隔。设置旋钮的值、最小值、最大值和刻度间隔。 设置拨动开关的开关位置在“设置拨动开关的开关位置在“OffOff”。”。 设置半圆形仪表的值、最小值、最大值。设置半圆形仪表的值、最小值、最大值。 2. App Desi
17、gner 2. App Designer 设计实例设计实例 (2 2)利用属性面板设置组件对象的属性。)利用属性面板设置组件对象的属性。 选中坐标轴对象,切换到“代码视图”,将坐标轴边框的选中坐标轴对象,切换到“代码视图”,将坐标轴边框的 LineWidthLineWidth属性值修改为属性值修改为0.20.2。 2. App Designer 2. App Designer 设计实例设计实例 (3 3)编写代码,实现组件功能。)编写代码,实现组件功能。 amramr= =evaleval( (app.ARadio.Valueapp.ARadio.Value);); theta=theta=a
18、pp.PhDiff.Valueapp.PhDiff.Value/180*pi;/180*pi; x=x=linspacelinspace(0,10*pi,300);(0,10*pi,300); y=sin(x)+sin(3*y=sin(x)+sin(3*x+thetax+theta)/)/amramr; ; if if strcmpstrcmp( (app.Noise.Value,Onapp.Noise.Value,On) y=y=awgnawgn(y,30);(y,30); endend app.WaveA.Valueapp.WaveA.Value=max(y);=max(y); plot(app.UIAxes,x,y,LineWidth,0.1);plot(app.UIAxes,x,y,LineWidth,0.1); 2. App Designer 2. App Designer 设计实例设计实例 (4 4)运行)运行AppApp应用程序。应用程序。 2. App Designer 2. App Designer 设计实例设计实例