MATLAB的uicontrol包括按钮、滑标、文本框及弹出式菜单。
语法格式:hc_1=uicontrol(Hf_fig,'PropertyName',PropertyValue,...)
共有8种不同类型或形式的控制框,属性'Style'决定了所建控制框的类型,'CallBack'属性值是当控制框激活时,传给eval在命令窗口空间执行的字符串。
下面就分别介绍 这8种不同类型的控制框,主要是它们的创建语句格式。
1)按钮
hc_close=uicontrol(gcf,'Style','push','Position',[10,10,100,25],...
'String','Close','CallBack','close');
Position属性定义按钮键大小和位置,String定义了按钮标志(名称),按钮的Style属性是pushbutton。
)无线按钮(选择/切换按钮)
由一个标志和标志文本的左端一个小圆圈或小菱形所形成。当选中时,圆圈被填充,且'Value'属性值设为1;没被选中为0。无线按钮具有互斥性,当一组选项value为1,其他就为0。
应用代码如下:
hc_boxon=uicontrol(gcf,'Style','radio','Position',[5,26,100,15],...
'String','Set Box on','Value',0,'CallBack',[...
'set(hc_boxon,''Value'',1),',...
'set(hc_boxoff,''Value'',0),',...
'set(gca,''Box'',''on''),']);
hc_boxoff=uicontrol(gcf,'Style','radio','Position',[5,5,100,15],...
'String','Set Box off','Value',1,'CallBack',[...
'set(hc_boxon,''Value'',0),',...
'set(hc_boxoff,''Value'',1),',...
'set(gca,''Box'',''off''),']);
3)复选框
激活时,uicontrol在检查和清楚状态之间切换。Value属性值同上。
hc_box=uicontrol(gcf,'Style','check','Position',[5,26,100,15],...
'String','Axis Box','CallBack',[...
'if get(hc_box,''Value'')==1,',...
'set(gca,''Box'',''on''),',...
'else,',...
'set(gca,''Box'',''off''),'...
'end']);
4)静态文本框
用户不能动态地修改所显示的文本,文本只能通过改变'String'属性来更改。
hc_text=uicontrol(gcf,'Style','text','Position',[200,200,75,15],...
'String',['Hello World']);
5)可编辑文本框
hc_multi=uicontrol(gcf,'Style','edit','Position',[200,150,55,100],...
'String','Line1|Line2|Line3',...
'Max',2);
通过把'Max'属性及'Min'属性设置成数值,可建立多行可编辑文本框。
6)滚动条
三种方式设定:
法1:使鼠标指针指向指示器,移动指示器,拖动鼠标时,要按住鼠标按键,当指示器位于期望位置后松开鼠标。
法2:当指针处于槽中但在指示器一侧时,单击鼠标按键,指示器按该侧方向移动距离约等于整个值域范围的10%。
法3:在滚动条不论哪端单击鼠标指针,指示器沿着箭头方向移动大约滑标范围的1%。
例:设置视点方位角
clc
vw=get(gca,'View'); %获得当前axis的三维视角(方位角和仰视角)
hc_az=uicontrol(gcf,'Style','slider','Position',[2,2,140,20],...
'Min',-90,'Max',90,'Value',vw(1),...
'CallBack',[...
'set(hc_cur,''String'',num2str(get(hc_az,''Value''))),'...
'set(gca,''View'',[get(hc_az,''Value''),vw(2)])']);%仰角不变,方位角为滚动条所在的值
%创建三个静态文本框,分别显示最大最小及当前值
hc_min=uicontrol(gcf,'Style','text',...
'Position',[2 25 20 15],...
'String',num2str(get(hc_az,'Min')));
hc_max=uicontrol(gcf,'Style','text',...
'Position',[128 25 20 15],...
'String',num2str(get(hc_az,'Max')));
hc_cur=uicontrol(gcf,'Style','text',...
'Position',[65 25 20 10],...
'String',num2str(get(hc_az,'Value')));
滑标方向取决于宽与高之比。如果width大于height,就画水平方向的滑标,否则就画垂直方向的滑标。在X Window系统平台中,如果滑标一个方向大小比另一个方向小于4倍,就不显示,其他操作平台上滑标均有箭头。
7)弹出式菜单
当选择一个弹出项时,'Value'属性值会设置成选择向量所选元素的下标。选项的标志指定为一个字符串,用"|"分隔。
hc_az=uicontrol(gcf,'Style','popupmenu','Position',[200,200,80,20],...
'String','Black|Red|Yellow',...
'Value',1,...
'UserData',[[0 0 0];...
[1 0 0];...
[1 1 0]],...
'CallBack',[...
'UD=get(hc_fcolor,''UserData'');',...
'set(gcf,''Color'',UD(get(hc_fcolor,''Value''))']);
8)框架
仅是带色彩的矩形区域,提供了视觉的分隔性。要事先定义!否则可能覆盖其他控制框。
clc
hc_frame=uicontrol(gcf,'Style','frame','Position',[250 200 95 90]);
hc_pb1=uicontrol(gcf,'Style','push','Position',[255 205 40 40],'String','Ok');
hc_pb2=uicontrol(gcf,'Style','push','Position',[300 205 40 40],'String','NOT');
hc_text=uicontrol(gcf,'Style','text','Position',[255 256 85 20],'String','Push Me');