M文件实现GUI

来源:互联网 发布:linux 设置用户根目录 编辑:程序博客网 时间:2024/06/07 19:39
%% M file realize GUI
h0 = figure;
set(h0,'unit','normalized','menu','none',...
    'position',[0.1 0.1 0.8 0.8],'color','default',...
    'numbertitle','off','name','M file realize GUI ');
ax = axes;
set(ax,'unit','normalized','position',[0.1 0.1 0.8 0.8]);
h = uicontextmenu;
set(h0,'uicontextmenu',h);
h1 = uimenu(h,'label','函数');
h2 = uimenu(h,'label','颜色');
h3 = uimenu(h,'label','线型');
h4 = uimenu(h,'label','线宽');
h5 = uimenu(h,'label','点处图形');
h6 = uimenu(h,'label','坐标轴');
h7 = uicontrol(h0,'string','退出','callback','closereq;',...
    'unit','normalized','position',[0.04 0.04 0.05 0.05]);
%%
h11 = uimenu(h1,'label','sin函数','callback',...
    ['x = linspace(-4*pi,4*pi,500);','y = sin(x);','l = plot(x,y);']);
h12 = uimenu(h1,'label','cos函数','callback',...
    ['x = linspace(-4*pi,4*pi,500);','y = cos(x);','l = plot(x,y);']);
h13 = uimenu(h1,'label','sinc函数','callback',...
    ['x = linspace(-4*pi,4*pi,500);','y = sinc(x);','l = plot(x,y);']);
%%
% h11 = uimenu(h1,'label','sin函数','callback',...
%     ['x = linspace(-4*pi,4*pi,500);','y = sin(x);','delete(allchild(ax));',...
%     'l = line(''xdata'',x,''ydata'',y);']);
% h12 = uimenu(h1,'label','cos函数','callback',...
%     ['x = linspace(-4*pi,4*pi,500);','y = cos(x);','delete(allchild(ax));',...
%     'l = line(''xdata'',x,''ydata'',y);']);
% h13 = uimenu(h1,'label','sinc函数','callback',...
%     ['x = linspace(-4*pi,4*pi,500);','y = sinc(x);','delete(allchild(ax));',...
%     'l = line(''xdata'',x,''ydata'',y);']);
%%
% x = linspace(-4*pi,4*pi,500);
% h11 = uimenu(h1,'label','sin函数','callback',...
%     ['delete(allchild(ax));','l = line(''xdata'',x,''ydata'',sin(x));']);
% h12 = uimenu(h1,'label','cos函数','callback',...
%     ['delete(allchild(ax));','l = line(''xdata'',x,''ydata'',cos(x));']);
% h13 = uimenu(h1,'label','sinc函数','callback',...
%     ['delete(allchild(ax));','l = line(''xdata'',x,''ydata'',sinc(x));']);
%%
% h11 = uimenu(h1,'label','sin函数','callback',...
%     ['delete(allchild(ax));','l = line(''xdata'',linspace(-4*pi,4*pi,500),''ydata'',sin(linspace(-4*pi,4*pi,500)));']);
% h12 = uimenu(h1,'label','cos函数','callback',...
%     ['delete(allchild(ax));','l = line(''xdata'',linspace(-4*pi,4*pi,500),''ydata'',cos(linspace(-4*pi,4*pi,500)));']);
% h13 = uimenu(h1,'label','sinc函数','callback',...
%     ['delete(allchild(ax));','l = line(''xdata'',linspace(-4*pi,4*pi,500),''ydata'',sinc(linspace(-4*pi,4*pi,500)));']);
%%
h21 = uimenu(h2,'label','红色','callback','set(l,''color'',''r'');');
h22 = uimenu(h2,'label','青色','callback','set(l,''color'',''g'');');
h23 = uimenu(h2,'label','黄色','callback','set(l,''color'',''y'');');
%%
h31 = uimenu(h3,'label','实线','callback','set(l,''linestyle'',''-'');');
h32 = uimenu(h3,'label','虚线','callback','set(l,''linestyle'',''--'');');
h33 = uimenu(h3,'label','点线','callback','set(l,''linestyle'','':'');');
h34 = uimenu(h3,'label','点划线','callback','set(l,''linestyle'',''-.'');');
%%
h41 = uimenu(h4,'label','2','callback','set(l,''linewidth'',2);');
h42 = uimenu(h4,'label','4','callback','set(l,''linewidth'',4);');
h42 = uimenu(h4,'label','6','callback','set(l,''linewidth'',6);');
h42 = uimenu(h4,'label','8','callback','set(l,''linewidth'',8);');
%%
h51 = uimenu(h5,'label','五角星','callback','set(l,''marker'',''p'');');
h51 = uimenu(h5,'label','*','callback','set(l,''marker'',''*'');');
h51 = uimenu(h5,'label','叉号','callback','set(l,''marker'',''?'');');
h51 = uimenu(h5,'label','菱形','callback','set(l,''marker'',''d'');');
h51 = uimenu(h5,'label','方形','callback','set(l,''marker'',''s'');');
%%
h61 = uimenu(h6,'label','打开坐标轴','callback','axis on;');
h62 = uimenu(h6,'label','关闭坐标轴','callback','axis off;');
%% 实现不同函数图像颜色、线型、线宽的全局控制,
%第一种方法用plot函数每执行一次会将原来的图像覆盖掉,所以事先不用清除图像,
%第二种方法用line函数绘图,每执行一次会在坐标轴上添加一条线,事先应清除之前图像
%当点击sin函数时l = plot(x,y);,将plot函数绘制的对象赋予变量l,
%当点击cos函数时l = plot(x,y);,将plot函数绘制的对象赋予变量l,
%当点击sinc函数时l = plot(x,y);,将plot函数绘制的对象赋予变量l,
% ax = axis;%可以生成坐标轴
% ax = axes;%注意和下面的语句一起使用时,是ax = axes;而不是ax = axis;
% set(ax,'position',[0.1 0.1 0.8 0.8]);
% 空间保存了之前运行程序保存的变量,即使没有定义变量,运行也不会出错,但是将空间中的

%变量清楚,再次运行就会出错

%% M file realize GUI
h = figure;
set(h,'unit','normalized','menu','none',...
    'position',[0.1 0.1 0.8 0.8],'color','default',...
    'numbertitle','off','name','M file realize GUI ');
ax = axes;
set(ax,'unit','normalized','position',[0.1 0.1 0.8 0.8]);
h1 = uimenu(h,'label','函数');
h2 = uimenu(h,'label','颜色');
h3 = uimenu(h,'label','线型');
h4 = uimenu(h,'label','线宽');
h5 = uimenu(h,'label','点处图形');
h6 = uimenu(h,'label','坐标轴');
h7 = uicontrol(h,'string','退出','callback','closereq;',...
    'unit','normalized','position',[0.04 0.04 0.05 0.05]);
%%
h11 = uimenu(h1,'label','sin函数','callback',...
    ['x = linspace(-4*pi,4*pi,100);','y = sin(x);','l = plot(x,y);']);
h12 = uimenu(h1,'label','cos函数','callback',...
    ['x = linspace(-4*pi,4*pi,100);','y = cos(x);','l = plot(x,y);']);
h13 = uimenu(h1,'label','sinc函数','callback',...
    ['x = linspace(-4*pi,4*pi,100);','y = sinc(x);','l = plot(x,y);']);
%%
% h11 = uimenu(h1,'label','sin函数','callback',...
%     ['x = linspace(-4*pi,4*pi,500);','y = sin(x);','delete(allchild(ax));',...
%     'l = line(''xdata'',x,''ydata'',y);']);
% h12 = uimenu(h1,'label','cos函数','callback',...
%     ['x = linspace(-4*pi,4*pi,500);','y = cos(x);','delete(allchild(ax));',...
%     'l = line(''xdata'',x,''ydata'',y);']);
% h13 = uimenu(h1,'label','sinc函数','callback',...
%     ['x = linspace(-4*pi,4*pi,500);','y = sinc(x);','delete(allchild(ax));',...
%     'l = line(''xdata'',x,''ydata'',y);']);
%%
% x = linspace(-4*pi,4*pi,500);
% h11 = uimenu(h1,'label','sin函数','callback',...
%     ['delete(allchild(ax));','l = line(''xdata'',x,''ydata'',sin(x));']);
% h12 = uimenu(h1,'label','cos函数','callback',...
%     ['delete(allchild(ax));','l = line(''xdata'',x,''ydata'',cos(x));']);
% h13 = uimenu(h1,'label','sinc函数','callback',...
%     ['delete(allchild(ax));','l = line(''xdata'',x,''ydata'',sinc(x));']);
%%
% h11 = uimenu(h1,'label','sin函数','callback',...
%     ['delete(allchild(ax));','l = line(''xdata'',linspace(-4*pi,4*pi,500),''ydata'',sin(linspace(-4*pi,4*pi,500)));']);
% h12 = uimenu(h1,'label','cos函数','callback',...
%     ['delete(allchild(ax));','l = line(''xdata'',linspace(-4*pi,4*pi,500),''ydata'',cos(linspace(-4*pi,4*pi,500)));']);
% h13 = uimenu(h1,'label','sinc函数','callback',...
%     ['delete(allchild(ax));','l = line(''xdata'',linspace(-4*pi,4*pi,500),''ydata'',sinc(linspace(-4*pi,4*pi,500)));']);
%%
h21 = uimenu(h2,'label','红色','callback','set(l,''color'',''r'');');
h22 = uimenu(h2,'label','青色','callback','set(l,''color'',''g'');');
h23 = uimenu(h2,'label','黄色','callback','set(l,''color'',''y'');');
%%
h31 = uimenu(h3,'label','实线','callback','set(l,''linestyle'',''-'');');
h32 = uimenu(h3,'label','虚线','callback','set(l,''linestyle'',''--'');');
h33 = uimenu(h3,'label','点线','callback','set(l,''linestyle'','':'');');
h34 = uimenu(h3,'label','点划线','callback','set(l,''linestyle'',''-.'');');
%%
h41 = uimenu(h4,'label','2','callback','set(l,''linewidth'',2);');
h42 = uimenu(h4,'label','4','callback','set(l,''linewidth'',4);');
h42 = uimenu(h4,'label','6','callback','set(l,''linewidth'',6);');
h42 = uimenu(h4,'label','8','callback','set(l,''linewidth'',8);');
%%
h51 = uimenu(h5,'label','五角星','callback','set(l,''marker'',''p'');');
h51 = uimenu(h5,'label','*','callback','set(l,''marker'',''*'');');
h51 = uimenu(h5,'label','o','callback','set(l,''marker'',''o'');');
h51 = uimenu(h5,'label','菱形','callback','set(l,''marker'',''d'');');
h51 = uimenu(h5,'label','方形','callback','set(l,''marker'',''s'');');
%%
h61 = uimenu(h6,'label','打开坐标轴','callback','axis on;');
h62 = uimenu(h6,'label','关闭坐标轴','callback','axis off;');
%% 实现不同函数图像颜色、线型、线宽的全局控制,
%第一种方法用plot函数每执行一次会将原来的图像覆盖掉,所以事先不用清除图像,
%第二种方法用line函数绘图,每执行一次会在坐标轴上添加一条线,事先应清除之前图像
%当点击sin函数时l = plot(x,y);,将plot函数绘制的对象赋予变量l,
%当点击cos函数时l = plot(x,y);,将plot函数绘制的对象赋予变量l,
%当点击sinc函数时l = plot(x,y);,将plot函数绘制的对象赋予变量l,
% ax = axis;%可以生成坐标轴
% ax = axes;%注意和下面的语句一起使用时,是ax = axes;而不是ax = axis;
% set(ax,'position',[0.1 0.1 0.8 0.8]);
% 空间保存了之前运行程序保存的变量,即使没有定义变量,运行也不会出错,但是将空间中的
%变量清除,再次运行就会出错

0 0
原创粉丝点击