Matlab学习笔记(三)--菜单与控件

26、菜单的创建

使用函数uimenu创建菜单.

使用示例:

clear all ;

clc ;

rect=get(0,'screenSize');%获取屏幕尺寸

N=512;%屏幕尺寸

%创建图形窗口

gwin=figure('MenuBar','none','NumberTitle','off','Name','菜单创建演示',...

    'Position',[(rect(3)-N)/2,(rect(4)-N)/2,N,N],'Resize','off');

axis([0 12 0 15]);

set(gca,'xtick',[0:0.5:12]);%设置横坐标轴的间距

set(gca,'ytick',[0:1:15]);%设置纵坐标轴的间距

%创建一级菜单

hw0=uimenu(gwin,'label','&FILE');

hw1=uimenu(gwin,'label','&EDIT');

hw2=uimenu(gwin,'label','&VIEW');

hw3=uimenu(gwin,'label','&HELP');

%创建二级菜单

hw00=uimenu(hw0,'label','&NEW');

hw01=uimenu(hw0,'label','&OPEN');

hw02=uimenu(hw0,'label','&SAVE');

hw03=uimenu(hw0,'label','&SAVE AS...');

%创建三级菜单

hw000=uimenu(hw00,'label','txt');

hw001=uimenu(hw00,'label','doc');

%set(hw0,'Accelerator','F');

%创建三级菜单并绘图,回调函数调用函数形式一

hw002=uimenu(hw00,'label','Plot1','Callback','x=0:pi/10:2*pi;y=sin(x).^2+cos(x);plot(x,y,''r'')');

%回调函数调用函数形式二:调用qiexian.m文件

hw003=uimenu(hw00,'label','Plot2','Callback','qiexian');

my=inline('x.^2+2*x+y.^2=5*sin(x*y)','x','y');

hw004=uimenu(hw00,'label','Plot3','Callback','f=ezplot(my);set(f,''color'',''k'')');

%回调函数调用函数形式三

hw005=uimenu(hw00,'label','Plot4','Callback',...

    ['[x,y]=meshgrid(-8:0.5:8);'...

    'z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);'...

    'mesh(x,y,z);']);

注意:当在单引号中的内容还含有单引号的情况下,应将原来的单引号改为双单引号.

27、创建控件

对话框控件元素表

关键词

简称

意义

text

text

静态文本框

edit

edit

编辑框

listbox

list

列表框

popupmenu

popup

弹出框

slider

slider

滑动条

pushbutton

push

按纽

radiobutton

radio

单选按纽

checkbox

check

复选框

先创建一个绘图窗口.

clear all ;

clc ;

rect=get(0,'screenSize');%获取屏幕尺寸

N=512;%屏幕尺寸

gwin=figure('MenuBar','none','NumberTitle','off','Name','菜单创建演示',...

    'Position',[(rect(3)-N)/2,(rect(4)-N)/2,N,N],'Resize','off');

27.1创建静态文本框

htext=uicontrol(gwin,'Style','text','String','Select Color','Position',[120,200,100,30]);

说明:此处设置的坐标为绝对坐标.

27.2创建组框

rect=get(gwin,'Position');%获取绘图窗口坐标

uicontrol(gwin,'Unit','normalized','Style','Frame','position',[100/rect(1),20/rect(2),200/rect(3),50/rect(4)]);

说明:此处属性'Unit'表示设置创建的控件的坐标是相对坐标,坐标中的四个数值均为分数,分子表示相对坐标值,分母为父窗口的坐标.并且此属性设置必须放在其它属性设置前面.

27.3创建单选按钮

rect=get(gwin,'Position');

hradio1=uicontrol(gwin,'Unit','Normalized','Style','radio','String','red','Position',...

    [100/rect(1),100/rect(2),200/rect(3),25/rect(4)],'value',0,'Callback',...

    ['set(gwin,''color'',''red'');'...

    'set(hradio1,''value'',1);'...

    'set(hradio2,''value'',0);'...

   'set(hradio3,''value'',0);']);

hradio2=uicontrol(gwin,'Unit','Normalized','Style','radio','String','blue','Position',...

    [100/rect(1),90/rect(2),200/rect(3),25/rect(4)],'value',0,'Callback',...

    ['set(gwin,''color'',''blue'');'...

    'set(hradio1,''value'',0);'...

    'set(hradio2,''value'',1);'...

    'set(hradio3,''value'',0);']);

hradio3=uicontrol(gwin,'Unit','Normalized','Style','radio','String','green','Position',...

    [100/rect(1),80/rect(2),200/rect(3),25/rect(4)],'value',0,'Callback',...

     ['set(gwin,''color'',''green'');'...

    'set(hradio1,''value'',0);'...

    'set(hradio2,''value'',0);'...

    'set(hradio3,''value'',1);']);

说明:当’value’属性设置为1时表示该单选按钮被选中,否则没有选中.

27.4创建按钮

【例一】:绘图

pbstart=uicontrol(gcf,'Style','push','Position',[20,20,100,25],...

'String','start plot','Foreground','r','Background','b',...

'Callback','t=-pi:pi/20:pi;plot(t,sin(t))');

说明:BackgroundColor和ForegroundColor属性。分别用来控制元件的前景和背景颜色,其取值仍然为1×3的颜色配比向量。例如对按钮控制元件来说,前景颜色即指按钮上的字符颜色,而背景颜色为整个按钮的颜色。

【例二】:显示图像

gwin=figure('KeyPressFcn','comm2(hbutton)');%当按下键盘时调用comm2.m文件

hbutton=uicontrol('Style','pushbutton','Units','normalized',...

'Position',[0.2,0.2,0.6,0.6],'Callback','comm2(hbutton)');%按下按钮时调用comm2.m文件

%%%%%%%%%%%comm2.M文件内容如下%%%%%%%%%%%

function comm2(hbutton)

hid=imread('F:\pictures\Pure girl\1.jpg');

set(hbutton,'Cdata',hid);%显示图像

27.5创建复选按钮

winw=rect(3);

winh=rect(4);

hn=uicontrol(gcf,'Style','check','Position', [0.1*winw,0.2*winh,0.25*winw,0.1*winh],...

  'String','MyName','CallBack',['set(gcf,''Name'',''复选框未选中'');',...

'if get(hn,''Value'')==1,','set(gcf,''Name'',''复选框被选中''),','end']);

27.6创建下拉列表框

hpop=uicontrol(gcf,'Style','popup','String','red|blue|green|yellow','Position',[100,100,100,80],...

    'CallBack',['cbcol=[''R'',''B'',''G'',''Y''];'...

'set(gcf,''Color'',cbcol(get(hpop,''Value'')))']);

说明:弹出框可选项在String属性中设置,每项之间用竖线字符“|”隔开,并用单撇号将所有的选项括起来。Value属性的值是弹出式列表中选项的序号。例如,如果用户选列表中的第4项,那么Value的属性值就是4。

27.7创建列表框

hlist=uicontrol(gcf,'Style','list','String','red|blue|green|yellow',...

'Position',[100,100,100,80],'CallBack',...

['cbcol=[''r'',''b'',''g'',''y''];',...

'set(gcf,''Color'',cbcol(get(hlist,''Value'')));']);

27.8创建滑动条

hslid1=uicontrol(gwin,'Style','slider','Position',[50,50,120,20],...

    'Min',200,'Max',800,'Value',400,'CallBack',...

    ['set(azmcur,''String'',num2str(get(hslid1,''Value'')));'...

     'set(gcf,''Position'',[50,50,get(hslid1,''Value''),300]);']);

azmcur=uicontrol(gwin,'Style','text','Position',[50,80,50,20],...

'String',num2str(get(hslid1,'Value')));

27.9创建编辑框

hedit=uicontrol(gwin,'Style','edit','Unit','normalized',...

'Position',[0.63,0.55,0.2,0.1],'String','10','Min',1,'Max',3);

说明:

参数’Min’与’Max’共同设置编辑框可输入文本的行数,当Max-Min>1时表示可以输入多行;当Max-Min<=1时表示只能输入单行.例如Min=1,Max=2;Min=1,Max=-2均表示只能输入单行文本.Max=3,Min=1就表示可以输入多行文本,并且行数没有最大值限制.缺省情况是只能输入单行文本.

对于下拉列表框及列表框等其它控件均可以进行类似的设置.

27.10获取一些控件的值(或内容)

  1. get(hedit,'String');   %获取编辑框中内容,hedit为编辑框控件的句柄
  2. get(hpopup,'Value'); %获取下拉列表框选中的内容,hpopup为下拉表框控件的句柄
  3. get(hlist,'Value');     %获取列表框的选中的内容,hlist为列表框控件的句柄

说明:如果列表框中设置可以选中多行时,则返回的值为一个行向量,各元素分别表示选中的项的索引值.

27.11一些控件属性设置

set(hedit,'HorizontalAlignment','left');

%设置左对齐,hedit为编辑框句柄.

set(hedit,'Enable','off');

%设置编辑框为只读,不可修改内容.

28、一些常用句柄及相关操作函数

  1. gcf函数:获得当前图形窗口的句柄
  2. gca函数:获得当前坐标轴的句柄
  3. gco函数:获得当前对象的句柄
  4. gcbo函数:获得当前正在执行调用的对象的句柄
  5. gcbf函数:获取包括正在执行调用的对象的图形句柄
  6. delete函数:删除句柄所对应的图形对象
  7. findobj函数:查找具有某种属性的图形对象

29、一些常用对话框

错误对话框: h = errordlg(errorstring,dlgname,createmode);

帮助对话框: helpdlg('helpstring','dlgname');

输入对话框: answer = inputdlg(prompt,dlg_title,num_lines);

列表框对话框: [Selection,ok] = listdlg('ListString',S);

弹出消息框: h = msgbox(Message,Title,Icon);

询问对话框: button = questdlg('qstring','title');

警告对话框:h = warndlg(warningstring,dlgname);

猜你喜欢

转载自blog.csdn.net/huzhizhewudi/article/details/84438985