ch09图形用户界面GUIWord文档格式.docx
《ch09图形用户界面GUIWord文档格式.docx》由会员分享,可在线阅读,更多相关《ch09图形用户界面GUIWord文档格式.docx(39页珍藏版)》请在冰点文库上搜索。
105设计区的坐标参照和位置编排器
(1)版面设计区的坐标参照系
图9.2-4“格尺”对话框(默认状态)
图9.2-5设计辅助工具和功能
(2)组件位置编排器
图9.2-6编排器对三个组件进行对中处理
106控件组件属性值的初始设置
(1)控件或组件属性值初始设置的必要性
(2)在GUIDE中设置控件或组件属性值的方式
(3)对象属性观察器的引出
(4)属性观察器简介(图9.2-7)
图9.2-7属性观察器示例
107创建界面的文件保存和再命名
(1)对应GUIDE创建界面的两个伴生文件
(2)GUIDE所创建界面的保存操作
图9.2-8激活保存操作提示对话框
(3)GUIDE自动生成文件的再命名
.2.2控件的运作机理及创建
用于构建用户界面的组件(Components)中,有一类可专称为控件(Controls)。
其原因在于:
它们都是借助uicontrol用户界面控件指令(UserInterfaceControls)制作而成的。
它们的特征都是由Style等属性被赋予不同“值”后形成的。
这些控件的模板被排列在GUIDE左侧的模板区内,参见图9.2-5。
为帮助读者更好地掌握和运用控件,本节将分三小节展开。
第一小节,通过对各控件关键属性、操作方法、触发回调、回调子函数程式和控件外形变化的关联性阐述,深入浅出地剖析控件的运作机理和使用要领。
第二小节,介绍常需读者动手设置的若干通用属性。
第三小节,提供典型算例,供读者体验和参考。
101各控件的运作机理
102常需设置的控件通用属性
.2.3GUI界面的创建示例
101二阶系统阶跃响应演示界面
【例9.2-1】为归一化二阶系统
单位阶跃响应制作制作如图9.2-9所示的用户界面。
要求:
(1)通过编辑框和滑键都能输入阻尼比。
(2)刚启动的界面初始形态如图9.2-9所示。
(3)在刚启动的初始界面上,响应曲线用红线绘制;
而一旦界面被操作,则响应曲线将用蓝线绘制。
(4)在列表框中的三个选项可以任意组合。
图9.2-9用户界面的初始状态
(1)GUIDE的开启
图9.2-10设计本例用户界面的GUIDE
(2)对未来界面窗属性设置
图9.2-11窗属性编辑器
(3)辅助设计功能的引入
(4)根据题目要求进行界面构建
图9.2-12执行文件尚未填写时的生成界面
(5)由GUIDE自动产生的exm090201.m文件结构
(6)编写界面开启程序
functionexm090201_OpeningFcn(hObject,eventdata,handles,varargin)
%Thisfunctionhasnooutputargs,seeOutputFcn.
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%varargincommandlineargumentstoexm090201(seeVARARGIN)
%U_Start--------UStart
zeta=0.3;
set(handles.edit1,'
String'
num2str(zeta))
set(handles.slider1,'
Value'
zeta)
set(handles.gridon,'
0)
set(handles.gridoff,'
1)
set(handles.listbox1,'
handles.t=0:
0.05:
15;
%<
14>
handles.Color='
Red'
;
15>
handles.zeta=zeta;
%<
16>
handles.flag=0;
handles=surfplot(handles);
%<
18>
handles.flag=1;
19>
Blue'
20>
%U_End-----------------------------------------------------------------------------------UEnd
handles.output=hObject;
21>
guidata(hObject,handles);
(7)可编辑框的回调子函数
functionedit1_Callback(hObject,eventdata,handles)
%hObject
%handles
%U_Start-----------------------------------------------------U_Start
sz=get(hObject,'
);
6>
zeta=str2double(sz);
%<
7>
zeta)
9>
11>
%U_End-------------------------------------------------------U_End
(8)滑键回调子函数
functionslider1_Callback(hObject,eventdata,handles)
zeta=get(hObject,'
3>
num2str(zeta))%<
4>
5>
(9)无线电按键回调子函数
functiongridon_Callback(hObject,eventdata,handles)
0)
gridon
functiongridoff_Callback(hObject,eventdata,handles)
%U_Start------------------------------------------------------U_Start
gridoff
(10)列表框回调子函数
functionlistbox1_Callback(hObject,eventdata,handles)
listindex=get(hObject,'
ifany(listindex==1)
set(handles.listbox1,'
1)
end
10>
(11)绘图子函数
functionhandles=surfplot(handles)
%handles=surfplot(handles)
%handles
zeta=handles.zeta;
t=handles.t;
listindex=get(handles.listbox1,'
Nt=length(t);
ifhandles.flag==0
cla
zmin=get(handles.slider1,'
Min'
zmax=get(handles.slider1,'
Max'
zt=zmin:
zmax;
Nz=length(zt);
[ZT,T]=meshgrid(zt,t);
Y=zeros(Nt,Nz);
fork=1:
Nz
Y(:
k)=step(tf(1,[1,2*zt(k),1]),t);
end
surface(ZT,T,Y)
shadingflat
else
delete(handles.g1)
delete(handles.rline)
xz=ones(1,Nt)*zeta;
y1=ones(1,Nt)*1;
y=step(tf(1,[1,2*zeta,1]),t);
gz=[zeta,zeta,xz,zeta,zeta,xz];
gt=[t
(1),t
(1),t,t(end),t(end),fliplr(t)];
gy=[0,1,y1,1,0,0*y1];
handles.g1=line(gz,gt,gy,'
Color'
'
g'
LineWidth'
1);
%<
33>
handles.rline=line(xz,t,y,'
handles.Color,'
2);
K=length(get(handles.listbox1,'
));
forjj=1:
K
switchlistindex(jj)%<
37>
case1
case2
k95=min(find(y>
0.95));
k952=[(k95-1),k95];
t95=interp1(y(k952),t(k952),0.95);
line(zeta,t95,0.95,'
marker'
+'
markeredgecolor'
k'
markersize'
6);
case3
[ym,km]=max(y);
ifkm<
Nt&
(ym-1)>
line(zeta,t(km),ym,'
.'
5);
case4
ii=max(find(abs(y-1)>
0.05));
ifii<
Nt
line(zeta,t(ii+1),y(ii+1),'
r'
Marker'
o'
MarkerSize'
5)
xlabel('
{\zeta}'
)
ylabel('
t'
zlabel('
y'
alpha(0.7)
view(75,44)
(12)用户界面的运行
图9.2-13显示列表框全部选项的界面示例
102多指令输入的演示界面
【例9.2-2】制作一个用户界面,该界面启动后的初始状态如图9.2-14所示。
界面上的图形,由可编辑框中输入的指令生成。
本例目的:
演示可编辑框的“多行字符输入”使用法;
演示弹出框的“选项行字符”使用法;
演示检录框、切换键、按键的使用方法。
图9.2-14题目要求的用户界面初始态
(1)在GUIDE中进行界面配置
图9.2-15在GUIDE上进行界面设计
(2)界面执行文件的完整化
functionexm090202_OpeningFcn(hObject,eventdata,handles,varargin)
%U_Start-------------------------------------------U_Start
cla
CH=get(handles.edit1,'
Nch=size(CH,1);
forn=1:
Nch
eval(CH{n});
%<
%
end%<
ic=get(handles.popupmenu1,'
%<
clm=get(handles.popupmenu1,'
colormap(clm{ic})%<
12>
set(handles.togglebutton1,'
1)
Axisoff'
)
%U_End---------------------------------------------U_End
CH=get(hObject,'
%<
eval(CH{n});
functionpopupmenu1_Callback(hObject,eventdata,handles)
ic=get(hObject,'
clm=get(hObject,'
colormap(clm{ic})%<
functioncheckbox1_Callback(hObject,eventdata,handles)
ifget(hObject,'
)
gridon
gridoff
functioncheckbox2_Callback(hObject,eventdata,handles)
boxon
boxoff
functiontogglebutton1_Callback(hObject,eventdata,handles)
VTB=get(hObject,'
ifVTB%<
axisoff
set(hObject,'
Axison'
set(handles.checkbox1,'
Enable'
off'
set(handles.checkbox2,'
else%<
axison
on'
●按键回调子函数
functionpushbutton1_Callback(hObject,eventdata,handles)
close(handles.figure1)
(3)完成界面的创建
.2.4界面菜单和工具图标的创建
101标准菜单条和工具条的配置
【例9.2-3】在例9.2-1产生的界面上,配置MATLAB标准图形窗菜单,并对曲面上的特征点轨迹给以注释,如图9.2-16。
本例演示:
如何利用已有界面制作新界面;
通过对界面窗“MenuBar”和“ToolBar”属性的设置,产生标准菜单条和工具条;
“静态文本框”内容的动态变化。
图9.2-16带标准菜单和文字注释的图形用户界面
(1)利用已有界面制作新界面
(2)利用属性编辑器为界面配置标准菜单条和工具条
(3)按本题要求修改原界面
(4)修改exm090203.m文件
value'
表9.2-13surfplot子函数修改前后的对照
原surfplot子函数的最后五条指令
alpha(0.7)
view(75,