GUI设计实例2

  • 简介
  • 功能介绍
  • 设计解析
    • 更新设置(Tag:Update)
    • 【菜单】文件项
    • 【菜单 】2D绘制项
    • 【菜单 】3D绘制项
    • 【菜单 】帮助项
  • 结果展示
  • GUI游戏分享
  • 结束
    • 更多精彩,等你发现~
    • 自行下载

简介

有了实例1的学习,大家也掌握基本的使用了,本篇再详细介绍一个GUI的设计,再分享一些网上找到的别人设计的GUI小游戏~

有想法的可以自己迸发灵感时玩玩这些设计,需要参考涉及的设计源码就自行在文末获取了~

功能介绍

先看实例2的运行效果

界面比较简陋,就直接先描述下它的一些功能吧

1、菜单栏中的功能,分别有

File:用于打开fig文件,打印当前Figure,关闭EX2的界面

Plot 2D和3D:分别在图形显示窗口显示对应的2D或3D图形,会对应在图形选择和图形设置部分显示对应的类型。

Help:用于信息显示

2、图形显示部分

用于显示绘制的图形

3、图形选择

可以选择多种图形函数

4、图形设置下包含三个选项

网格开/关:绘出的图形中,是否需要显示网格

线型选择:有正常的line和一个“o”的绘图线型

横轴取值:设置了3个取值范围的选项,即X的范围值,仅使用于2D图形,3D图形下,会关闭该选项和线型选择

5、更新设置

在完成图形选择和图形设置后,点击更新设置,图形显示部分就会更新图形。

设计解析

使用到6组静态文本,即一般用于固定信息的显示,当然,你也可以用滚动框之类的s操作~

1个坐标轴,也就是用于图形显示的部分

图上显示的EX2_Show是它的tag值

1个面板,用于框选图形选择和图形设置部分,相对美观那么一丢丢吧。。。

1个按钮,就是更新设置对应的控件,Tag值为:Update

然后就是该GUI设计最重要的一个控件了,弹出式菜单,也就是运行后,可以用于选择结果的东西,总共用到了4组

既然要弹出来,肯定需要先预先设置好可弹的选项了,直接双击放置好的弹出式菜单,然后找到String,点击边上的那个小图框,会出现String的弹窗,在这里一行代表一个选项,使用句柄返回的Value值,则依次是1~5的值;Tag值也是个方便区分的名。

注意:如果放置了弹出式菜单,但是Style不是popupmenu的话,记得改成这个,不然要出错

然后就是依次对网格、线型和取值范围进行设置

这些设置好了,就是完善一下菜单的显示了,可以根据自己想法做修改

源码解析

做好界面的设计后,就是对这些控件的回调函数进行编程了,直接根据对应控件的源码作下简单讲解

更新设置(Tag:Update)

首先获取4个弹出式菜单选择的内容,然后根据选择的结果,做出对应的结果显示

% --- Executes on button press in Update.
function Update_Callback(hObject, eventdata, handles)
% hObject    handle to Update (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
%% 获取设置信息
v1 = get(handles.Func_Choose,'Value');
v2 = get(handles.Grid,'Value');
v3 = get(handles.Line_Shape,'Value');
v4 = get(handles.Range,'Value');
%% 运行设置选项
switch v4case 1t=-pi:pi/50:pi;case 2t=-2*pi:pi/50:2*pi;case 3t=0:pi/50:4*pi;
endswitch v1case 3peaks_Callback(hObject, eventdata, handles);        case 4cylinder_Callback(hObject, eventdata, handles);case 5sphere_Callback(hObject, eventdata, handles);
end
switch v1case 1Plot_2D_Callback(hObject, eventdata, handles);case 2Plot_2D_Callback(hObject, eventdata, handles);case 3Plot_3D_Callback(hObject, eventdata, handles);case 4Plot_3D_Callback(hObject, eventdata, handles);case 5Plot_3D_Callback(hObject, eventdata, handles);
end
switch v3case 1switch v1case 1plot(t,sin(t));title('sin(x)-Line');case 2plot(t,cos(t));title('cos(x)-Line');endxlabel('x');ylabel('y');case 2switch v1case 1plot(t,sin(t),'o');title('sin(x)-Circle');case 2plot(t,cos(t),'o');title('cos(x)-Circle');endxlabel('x');ylabel('y');
end
switch v2case 1grid on;case 2 grid off;
end

【菜单】文件项

文件项下还包含open、print和close的3个功能,同时关闭弹出式菜单的功能

function file_Callback(hObject, eventdata, handles)
% hObject    handle to file (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
set(handles.Grid,'Enable','off');
set(handles.Line_Shape,'Enable','off');
set(handles.Range,'Enable','off');
set(handles.Update,'Enable','off');function OpenMenuItem_Callback(hObject, eventdata, handles)
file = uigetfile('*.fig');
if ~isequal(file,0)%非空open(file);
endfunction PrintMenuItem_Callback(hObject, eventdata, handles)
printdlg(handles.figure1);function CloseMenuItem_Callback(hObject, eventdata, handles)
selection = questdlg(['Close' get(handles.figure1,'Name') '?'],...%提示框信息['Close' get(handles.figure1,'Name') '...'],...%提示框名称'Yes','No','Yes');%预选Yes
if strcmp(selection,'No')return;
end
delete(handles.figure1);

【菜单 】2D绘制项

由于Update中已经有了sin和cos图形的绘制,就将图形选择为对应的函数,然后再直接进行了调用Update的回调函数,相当于点了一下“更新设置”的按钮,同时会使能所有弹出式菜单的功能

function Plot_2D_Callback(hObject, eventdata, handles)
% hObject    handle to Plot_2D (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
set(handles.Func_Choose,'Enable','on');
set(handles.Grid,'Enable','on');
set(handles.Line_Shape,'Enable','on');
set(handles.Range,'Enable','on');
set(handles.Update,'Enable','on');function sinx_Callback(hObject, eventdata, handles)
set(handles.Func_Choose,'Value',1);%选择sin函数
Update_Callback(hObject, eventdata, handles)function cosx_Callback(hObject, eventdata, handles)
set(handles.Func_Choose,'Value',2);
Update_Callback(hObject, eventdata, handles)

【菜单 】3D绘制项

关闭3D图不需要的弹出式菜单功能,分别绘制了peaks、cylinder和sphere的3维图形。

function Plot_3D_Callback(hObject, eventdata, handles)
% hObject    handle to Plot_3D (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
set(handles.Func_Choose,'Enable','on');
set(handles.Grid,'Enable','on');
set(handles.Line_Shape,'Enable','off');
set(handles.Range,'Enable','off');
set(handles.Update,'Enable','on');function peaks_Callback(hObject, eventdata, handles)
set(handles.Func_Choose,'Value',3);
set(handles.Grid,'Value',1);
[X,Y,Z] = peaks;
surf(X,Y,Z);
xlabel('x');
ylabel('y');
zlabel('z');
% axis equal;
grid on;
title('Peaks');
axis([-3 3 -3 3 -10 10]);function cylinder_Callback(hObject, eventdata, handles)
set(handles.Func_Choose,'Value',4);
set(handles.Grid,'Value',1);
t=0:pi/20:2*pi;
x=(sin(t)+1)*5;
y=cos(t)*5;
z=linspace(0,5,length(t));
X=meshgrid(x);
Y=meshgrid(y);
Z=[meshgrid(z)]';
surf(X,Y,Z);
xlabel('x');
ylabel('y');
zlabel('z');
axis equal;
grid on;
title('Cylinder');
axis([0 10 -5 5]);
for vt=1:4view(-37.5,10*vt);
endfunction sphere_Callback(hObject, eventdata, handles)
set(handles.Func_Choose,'Value',5);
set(handles.Grid,'Value',1);
sphere;
xlabel('x');
ylabel('y');
zlabel('z');
axis equal;
grid on;
title('Sphere');

【菜单 】帮助项

显示信息,并关闭全部弹出式菜单的功能

function help_Callback(hObject, eventdata, handles)
% hObject    handle to help (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
set(handles.Func_Choose,'Enable','off');
set(handles.Grid,'Enable','off');
set(handles.Line_Shape,'Enable','off');
set(handles.Range,'Enable','off');
set(handles.Update,'Enable','off');function about_Callback(hObject, eventdata, handles)
% hObject    handle to about (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
helpdlg('Make from WeChat Official Account Platform [DZKR666]!!!!!','更多精彩,等你发现~');

结果展示

所有用到的回调函数都设置好之后,就可以运行测试效果了,本GUI设计还是有比较多的不足,有想法的你,可以再在此基础上直接修改~

直接展示部分运行的结果

GUI游戏分享

分享搜罗的三个GUI设计的游戏源码,没有对应的fig…

不过不影响运行~

1、俄罗斯方块

2、拼图

3、围棋

结束

关于GUI的使用到此就结篇了,在平常设计的时候,有心情的话,也可以思考思考如何把你现有的脚本设计改成这种GUI的方式,形象化功能的使用。
需要参考本篇实例的朋友可以在下方根据关键字获取下载链接,也可直接CSDN自行下载~


更多精彩,等你发现~


自行下载


Matlab系列之GUI设计实例2相关推荐

  1. Matlab系列之GUI设计基础

    Matlab系列之GUI设计基础 简介 编辑界面 菜单设计 控件设计 控件描述 个人理解 Matlab转译 控件属性 [1]外观与行为 [2]控件对象的信息 [3]回调函数 [4]状态信息 结束 更多 ...

  2. matlab gui设计实例_S-Funciton应用实例

    本文转载在我的微信公众号:古德曼汽车工业. 希望关注本专栏的朋友,也能一并关注微信公众号.

  3. 基于MATLAB图像检索系统GUI设计解析

    一.课题背景 随着互联网技术向宽带.高速.多媒体方向的发展,人类正快速进入一个信息化的时代.各种信息工具.技术.载体等应运而生.在众多类型的信息资源中,图像具有直观.形象.易于理解和信息量大等特点,成 ...

  4. 基于MATLAB的GUI设计简易计算器

    MATLAB语言基于GUI设计简易计算器 GUI界面的设置 主页----新建----应用程序----GUIDE 进入下图所示界面 点击确定,即可生成GUI设计界面. 设计计算器界面,放置按键和显示屏, ...

  5. 与matlab有关的课程设计,关于MATLAB 的课程设计

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 <Matlab>课程设计 一.课程设计目的 MATLAB是一种以数值计算和数据图示为主的计算机软件,并包含适应多个学科的专业软件包,以及完善程 ...

  6. matlab课程数字图像处理设计题目,数字图像处理课程设计题目和要求_2013

    数字图像处理课程设计内容.要求 题目一:图像处理软件 1.设计内容及要求: (1).独立设计方案,实现对图像的十五种以上处理(比如:底片化效果.灰度增强.图像复原.浮雕效果.木刻效果等等). (2). ...

  7. matlab GUI 设计 自学笔记

    图形用户界面(Graphical User Interface,GUI): 用户与计算机进行信息交流的窗口. 设计图形用户界面的方法 调用建立用户界面控件的函数 使用MATLAB提供的GUIDE工具进 ...

  8. 圆形上下挤压 matlab,基于Matlab的GUI设计双螺杆挤压机系统仿真软件

    基于Matlab的GUI设计双螺杆 挤压机系统仿真软件 王玉德,张文孝,韩翠玲 (1.大连水产学院,辽宁大连116023;2.山东省机电学校,山东兖州272105) 1 1 2 DesignofSim ...

  9. 基于MATLAB金属表面缺陷分类与测量的GUI设计

    前言: 好久不搞图像处理了(一年了吧),终于大三有门图像处理的选修课有个课设,我就怀着强迫症的思想把它好好做了下(话说好久没看其他专业课了...),其他两名女生全程躺...算法不好,脑子有点蠢熬夜太多 ...

  10. matlab写函数进行坐标正反算,坐标正反算的MATLAB GUI设计与应用

    第 30 卷 第 4 期 2018 年 10 月 黄河水利职业技术学院学报 JournalofYellowRiverConservancyTechnicalInstitute Vol.30 No.4 ...

最新文章

  1. 从XXX 产品的失败谈起
  2. JavaWeb_域对象的属性操作
  3. 大洗牌中的中国服务业:这个冬天远比你想象中寒冷
  4. python 画三角函数_python,将三角函数绘制成二维数组
  5. 关于配置Webapck的 exclude 不过滤 node_modules Babel却没有处理转换node_modules的源码
  6. 条件运算符和条件表达式
  7. html5学习笔记---05.JavaScript 中的面向对象,继承和封装
  8. Ubuntu16.04下部署 nginx+uwsgi+django1.9.7(虚拟环境pyenv+virtualenv)
  9. centos7桌面脚本双击运行
  10. 面试官看到一定会打我---软件测试工程师面试套路和暗语灵魂解密
  11. 手把手教你批量保存花瓣图片到同一目录的技巧
  12. idea插件开发--组件--编程久坐提醒
  13. MacOS下无屏幕通过共享WiFi的方式为树莓派4B安装64-bit系统
  14. Scala的基础语法(超详细版)
  15. luogu2791 幼儿园篮球题 第二类斯大林数(特)卡常NTT
  16. 《Android游戏编程之从零开始》书评之基础的魅力
  17. Java环境变量配置超详细教程
  18. 改进YOLOv5系列:2.PicoDet结构的修改
  19. 人人极客专访 | 我和我们的操作系统
  20. STM32CubeIDE STM32H743实现软件触发ADC实现多通道DMA方式、过采样方式采集数据

热门文章

  1. 常用计算机检索算符,在计算机检索中,常用的布尔逻辑算符有哪几种
  2. 眨眼信号分离及MATLAB实现
  3. 自助缴费终端无线联网方案
  4. 《Spring Boot极简教程》第1章 Spring Boot史前简述
  5. 你的大三,推荐做的几件事
  6. 不是会员不让复制粘贴?看我“三板斧”!
  7. 文本溢出显示省略号并显示tooltip组件
  8. 微软Hololens学院教程-Hologram 212-Voice(语音)【微软教程已经更新,本文是老版本】...
  9. UVA 10673 扩展欧几里得
  10. nmos和pmos区别、工作原理及基本结构详解