MATLAB图形界面制作GUI与句柄图形
利用Matlab的图形用户界面(GUI)功能,设计并实现实验主界面
(1)利用Matlab的图形用户界面(GUI)功能,设计并实现实验主界面;(2) 实现在“符号计算”图形用户界面中的各项符号计算功能,如实现Matlab的求极限、求导、求不定积分与定积分、级数求和、方程组的符号求解、常微分方程的符号求解等符号计算;(3) 利用Matlab的二维、三维绘图功能,实现图形用户界面(GUI)中的部分符号计算的可视化,即给出符号计算实例的同时实现该实例的图形化描述。
如下图给出了一个简单的GUI界面,学生可以参考如下图设计出自己的GUI界面。
程序如下:hf=figure('Position',[200,200,700,500],...'Name','信计08(2)班阿卜杜热黑木20080803417', ...'NumberTitle','off','MenuBar','none');uicontrol(hf,'Style','Frame','Position',[0,0.15,0.45,1],...'Units','normalized','Back',[0,1,1]);COMM1=['n=str2num(get(he1,''String''));', ...%求导连接'b=sym(get(he7,''String''));',...'dec=diff(b,n);', ...'set(he8,''string'',char(dec));'];COMM2=['a=str2num(get(he2,''String''));', ...%求极限连接'f=sym(get(he7,''String''));',...'lim=limit(f,a);', ...'set(he8,''string'',char(lim));'];COMM3=['g=sym(get(he7,''String''));',... %不定积分连接'int_1=int(g);', ...'set(he8,''string'',char(int_1));'];COMM4=['a=str2num(get(he3,''String''));', ... %级数求和连接'b=str2num(get(he5,''String''));', ...'f=sym(get(he7,''String''));',...'sum_1=symsum(f,a,b);', ...'set(he8,''string'',char(sum_1));'];COMM5=['a=str2num(get(he4,''String''));', ... %定积分连接'b=str2num(get(he6,''String''));', ...'f=sym(get(he7,''String''));',...'int_2=int(f,a,b);', ...'set(he8,''string'',char(int_2));'];COMM6=['f=get(he7,''String'');',...'dsolve_1=dsolve(f,''x'');', ...'set(he8,''string'',char(dsolve_1));'];COMM7=['f=get(he7,''String'');',...'ezplot(f);'];COMM8=['g=get(he8,''String'');',...'ezplot(g);'];uicontrol(hf,'Style','Push','Position',[0.02,0.9,0.11,0.06],...'String','求导','Units','normalized','Call',COMM1); uicontrol(hf,'Style','Text','Position',[0.17,0.85,0.08,0.1],...'Units','normalized','Horizontal','center',...'String','阶数','Back',[0,1,1]);he1=uicontrol(hf,'Style','Edit','Position',[0.25,0.9,0.15,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Push','Position',[0.02,0.72,0.13,0.06],...'String','求极限','Units','normalized','Call',COMM2);uicontrol(hf,'Style','Text','Position',[0.17,0.67,0.08,0.1],...'Units','normalized','Horizontal','center',...'String','极限点','Back',[0,1,1]);he2=uicontrol(hf,'Style','Edit','Position',[0.25,0.72,0.15,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Push','Position',[0.02,0.58,0.13,0.06],...'String','不定积分','Units','normalized','Call',COMM3);uicontrol(hf,'Style','Push','Position',[0.02,0.45,0.13,0.06],...'String','级数求和','Units','normalized','Call',COMM4);uicontrol(hf,'Style','Text','Position',[0.31,0.44,0.06,0.06],...'Units','normalized','Horizontal','center',...'String','上限','Back',[0,1,1]);he5=uicontrol(hf,'Style','Edit','Position',[0.38,0.45,0.06,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Text','Position',[0.17,0.44,0.06,0.06],...'Units','normalized','Horizontal','center',...'String','下限','Back',[0,1,1]);he3=uicontrol(hf,'Style','Edit','Position',[0.24,0.45,0.06,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Push','Position',[0.02,0.32,0.13,0.06],...'String','求定积分','Units','normalized','Call',COMM5);uicontrol(hf,'Style','Text','Position',[0.31,0.31,0.06,0.06],...'Units','normalized','Horizontal','center',...'String','上限','Back',[0,1,1]);he6=uicontrol(hf,'Style','Edit','Position',[0.38,0.32,0.06,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Text','Position',[0.17,0.3,0.08,0.06],...'Units','normalized','Horizontal','center',...'String','下限','Back',[0,1,1]);he4=uicontrol(hf,'Style','Edit','Position',[0.24,0.32,0.06,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Push','Position',[0.02,0.2,0.16,0.06],...'String','解微分方程','Units','normalized','Call',COMM6);uicontrol(hf,'Style','text','Position',[0.48,0.9,0.13,0.06],...'String','原函数','Units','normalized');he7=uicontrol(hf,'Style','edit','Position',[0.65,0.9,0.30,0.06],...'String','','Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','text','Position',[0.48,0.77,0.13,0.06],...'String','结果函数','Units','normalized');he8=uicontrol(hf,'Style','text','Position',[0.65,0.77,0.30,0.06],...'String','','Units','normalized','Back',[0,1,0]);h_axes=axes('position',[0.55,0.2,0.4,0.5]);uicontrol(hf,'Style','push','Position',[0.58,0.02,0.13,0.06],...'String','初始绘图','Units','normalized','call',COMM7);uicontrol(hf,'Style','push','Position',[0.80,0.02,0.13,0.06],...'String','结果绘图','Units','normalized','call',COMM8);uicontrol(hf,'Style','Push','Position',[0.02,0.02,0.08,0.06],...'String','退出','Units','normalized','Call', 'close');。
实验六 MATLAB句柄绘图和GUI界面设计
西北农林科技大学实验报告学院名称:理学院专业年级:姓名:学号:课程:数学软件实验报告日期:2014年11月22日实验六MATLAB的句柄绘图与GUI界面设计一、实验目的MATLAB语言的句柄绘图可以对图形的各基本对象进行更为细腻的修饰,能产生更为复杂的图形,而且为动态图形的制作奠定了基础。
本次实验的目的是了解图形的基本结构,掌握图形对象之间的关系,熟悉图形对象属性的获取、设置与修改。
并能初步使用MATLAB 的GUI界面设计进行界面的设计,为将来进行软件开发打好基础。
二.实验要求MATLAB的底层图形修饰方法十分的丰富,通过本次实验,要求能体会句柄图形的概念,熟悉根屏幕、图形窗口、界面控制、界面菜单、轴、线、面、字、块、像等基本图形对象的创建和修改,熟练掌握基本图形对象的属性获取、设置与修改,会利用对象属性修改图形,会创建与修改界面控制与界面菜单。
能根据需要使用消息对话框、警告对话框、输入对话框、提示对话框、列表对话框、进度指示条等。
能初步设计出自己较为满意的GUI图形用户界面。
三.实验内容一、句柄图形的概念句柄图形(Handle Graphics):是一种面向对象的绘图系统。
该系统提供创建计算机图形所必须的各种软件。
它所支持的指令,可直接创建线、文字、网线、面以及图形用户界面。
在MATLAB中的图形系统中,所有的图形操作都是针对图形对象而言的,每个对象从创建时起就被赋予了唯一的标识,这种标识就是该图像的句柄。
1.图形对象MATLAB的图形对象包括计算机屏幕、图形窗口、坐标轴、用户菜单、用户控件、曲线、曲面、文字、图像、光源、区域块和方框等。
系统将每一个对象按树型结构组织起来。
每个具体图形不必包含每个对象,但每个图形必须具备根屏幕和图形窗口。
2.图形对象句柄MATLAB在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄(Handle)。
句柄是图形对象的唯一标识符,不同对象的句柄不可能重复和混淆。
第五章 MATLAB里的GUI
创建图形用户界面的方法——图形句柄和GUIDE 都需要使用M语言编程,但是技术的侧重点不同。 MATLAB提供了基本的用户界面元素:包括菜单、快捷菜 单、按钮、复选框、单选框、文本编辑框、静态文本、下
拉列表框、列表框等。
句柄(handle)与句柄操作
什么是句柄?
句柄是图形对象的标识代码(唯一的身份),标 识代码含有图形对象的各种必要的属性信息。 各图形对象的句柄数据格式: 根屏幕 图形窗口 其它对象 0 正整数,表示图形窗口序号 对应的双精度浮点数
在GUIDE的界面的工具栏上包含了一些常用的工具,如图。
菜单编辑器
属性察看器
激活工具
对齐工具
M 文件编辑器
对象察看器
GUIDE工具栏上的工具按钮
图形用户界面的例子
在该图形用户界面中包含如下控件:
* 两个推按钮(push button),分别完成绘制三维 曲面和改变色彩的功能;
* 五个静态文本框(static text),分别用来完成显 示不同信息的功能; * 一个滚动条(slide),用来完成改变三维曲面上 的分隔线色彩; * 一个坐标轴(axes),用来显示三维曲面;
选择已经存在的图形界面文件,该文件的扩展名为 fig。 打开一个存在的GUI界面文件: >> guide gui_filename 这时在GUIDE中将显示已经创建好的图形界面外 观。
选择空白界面类型,并单击“OK”按钮,这时
MATLAB将启动GUIDE的图形界面,如图所示。
具有空白界面的GUIDE图形界面
例:
get(0,'DefaultFigureColor') —— 获得图形 窗口的省缺值 set(h,'DefaultLineColor','r') ——设置线的 颜色为红色 例:在图上添加文字注释,颜色为红色 set(gca,'DefaultTextColor',[1 0 0]) gtext('正弦') gtext('余弦') %鼠标取点 在轴对象上设置字对象的颜色省缺值为红色 继承该省缺值在图上添加红色的文字注释
MATLAB GUI程序设计
按钮控件
图形窗口
坐标轴
句柄( 句柄(Handle)—图形对象的标志 ) 图形对象的标志
句柄就是某个图形对象的记号, 句柄就是某个图形对象的记号,matlab给每 给每 个图形对象都指定一个handle,由句柄唯一 个图形对象都指定一个 , 地标值要操作的图形对象( 地标值要操作的图形对象(类似电话区号和 号码)。 号码)。 对于root对象,matlab规定它的句柄是屏幕, 句柄值为0
Root(屏幕)
Figure(图)
Uicontrol( 界 面 控 制項)
Axes(轴)
Uimenu( 界 面 选 单)
Line (线条)
Surface (表面)
Rectangle (矩形)
Patch (貼片)
Image (图像)
Text (文字)
Light (光源)
图形体系
文字控件 界面表单
弹出表单 控件 曲线
创建GUI 创建
基本步骤: 基本步骤: 1. 设计 图形用户界面 2. 用GUIDE 编辑界面 3. 编写回调函数 4. 保存,运行 保存,
GUI编辑界面 编辑界面 对齐
菜单 工具栏 M文件编辑 文件编辑
控 件
{
属性
运行
基本控件Basic Controls: 基本控件 :
axes: 坐标轴 static text: 静态文 本,用户不可编辑 edit box: 文本框, 文本框, 用户可编辑。 用户可编辑。 button:按钮 按钮
属性窗口The Property Inspector: 属性窗口 : Tag –控件名称 控件名称. 控件名称 String – 控件显示的内容 ForegroundColor –文字显示内容 文字显示内容 BackgroundColor –控件背景 控件背景
4MATLAB图形界面制作(GUI)与句柄图形
一般制作步骤
界面制作包括界面设计和程序实现。具体制作 步骤如下:
(1)分析界面所要求实现的主要功能,明确设计任务。 (2)构建界面草图,并站在使用者的角度来审查草图。 (3)按构思的草图.制作(静态)界面并检查。 (4)编写界面动态功能的程序,对功能进行逐项检查。
[说明]
以上过程,仅是一般原则。在设计中,步骤之间也许要交叉 执行或复合执行。 设计和实现过程往往需要反复修改才能获得满意的界面。 建议先进行界面布局编码,后进行动态交互功能的编码。
2019/4/2 4
界面编程需要注意的事项
• 用户界面适合软件的功能(合适 性)。是指用户界面与软件功能 相融洽的程度。要避免用户的误 解、费解等。另外,不能为适应 某种体系结构的优势而导致界面 的不合适性。 容易理解。如果通过界面难以理 解界面的意图,使用起来一定费 力。容易理解是容易应用的前提。 要做到这一点:(1)界面中不能 有错字。(2)图标按钮含义直观 明了。(3)界面元素提供充分而 必要的提示。(4)界面结构能够 清晰的反映工作流程,以便用户 操作。 及时反馈信息。 防错处理。
2019/4/2 13
图形界面制作-菜单
• 在绝大多数的图形用户界面下,都包含有菜单。 通过选择各级菜单,可以执行相应的命令,实现 相应的功能。一般地,从菜单的标题或名字可以 大概了解该菜单的功能。在Windows系统中,菜 单一般位于用户图形界而的顶端。例如, MATLAB的主窗口中,就有一个主菜单栏,包括 File、Edit、View、Help等主菜单。在各级主菜单 下,还有相应的子菜单。 • 在MATLAB图形用户界面(GUI)设计中,有两种菜 单类型,分别是下拉式菜单类型Uimenu和内容式 菜单类型Uicontextmenu。
经典GUI基础入门:MATLAB中GUI用户图形界面学习
如果没有图形用户界面(GUI)我们只能从命令行(Command Window)中调用相关程序,这相对比较繁琐,并且不是所有用户都是这个能力。
就好比计算机的 DOS 系统,在有windows的情况下,您会选择DOS吗?当然我们也不排除骨灰级的人物!在本节教程我们主要针对没有G UI 创建和使用经历的网友,但是必要的M ATLAB基础知识是需要的。
在教程中我们将创建一个简单的GUI程序,它执行两个数的加法运行,然后显示其运算结果。
一、打开和创建GUI界面1、首先打开Matlab,在Command Window中输入guide回车2、此时打开GUI编辑器GUIDE(GUI Developer的缩写)2.1 界面上有两个标签也“Creat New GUI”和“Open Existing GUI”如果创建新的GUI此时我们选择第一个标签页,但如果打开其它已经存在的GUI 就点击第二个标签吧2.2 这里我们选择第一个标签下的“Blank GUI”(空白 GUI),下面还有几个系统GUI模版,你可以根据需要选择其它的。
2.3 点击“OK”我们正式进入GUIDE界面,呵呵,是不是感觉似曾相识3、添加你需要的控件到figure中在添加控件之前,您最好对您的GUI界面布局已经有一定的构思了,否则盲目性太大了不利于您的编程。
下面是我们构思的布局。
二、添加控件和设置属性在正式讲解之前,我们先讲解下GUI中的鼠标基本操作(a) 在左边的控件面板中鼠标左击选择您需要的控件,然后放开鼠标(b) 在右边的figure中按住左键,画出您的控件,于是空间就在figure上(c) 你可以用鼠标拖拽figure上所有控件,来改变他们的位置(d) 在控件上双击鼠标左键(右击是快捷菜单)可打开控件属性面板1、从上面的布局构思,我们知道本GUI需要以下控件:三个“编辑文本框”(Edit Text):三个“静态文本框”(Static Text):一个“确定按钮”(Pushbutton)按照上面介绍的鼠标操作方法,将这6个控件拖到右边的figure中,如下图所示2、接下来就是编辑这些控件的属性好,下面从Static Text开始吧,双击其中一个“静态文本块”,将跳出该控件的“属性查看器”(Property Inspector)GUI控件的几个常用属性说明如下:position:指示空间在figure中的位置font**:字体相关属性string:相当如VB中的caption,就是显示在控件上的文字tag:控件的唯一标识符,相当于ID,我们需要tag来指定某一个空间2.1 在这里我们修改它的“string”属性为“+”2.2 同理修改它的“fontsize”属性为20在编辑完这些属性后,直接点击右上角的“关闭”按钮,关闭属性查看器,此时属性会自动保存。
MATLAB句柄图形
句柄图形句柄图形对象句柄图形是对底层图形例程集合的总称,实际上是进行生成图形的工作句柄图形的概念:一幅图的每一组成部分是一个对象,每一个对象有一系列句柄和它相关,每一个对象又按需要可以改变属性1、图形框架窗口对象(Figure)(1)、绘制图形的图形框架窗口对象gca:获得当前坐标轴对象的句柄gcbf:获得当前正在执行调用的图形对象的句柄gcbo:获得当前正在执行调用的对象的句柄gcf:获得当前图形对象的句柄gco:获得当前对象的句柄get(gcf) %由于当前状态下不存在图形窗口,系统生成新的图形窗口(2)、核心(Core)对象核心对象:包括直线、文本和特殊对象(光、图像和面图)等基本的绘图命令坐标系对象:包括线、面图和等高线图等描述的数据对象MATLAB中创建核心对象的函数axes:坐标轴image:MATLAB中的图像light:光源line:二维图形中最基本的图形对象patch:按指定方式填充多边形rectangle:具有可设置边界和表面颜色的二维图形对象surface:图形表面text:图形中的文本[x y]=meshgrid([-2:0.4:2]);Z=x.*exp(-x.^2-y.^2);fh=figure('Position',[350 275 600 450],'Color','w');ah=axes('Color',[0.8 0.8 0.8],'XTick',[-2 -1 0 1 2],...'YTick',[-2 -1 0 1 2]);sh=surface('XData',x,'YData',y,'ZData',Z,...'FaceColor',get(ah,'Color')+0.1,...'EdgeColor','k','Marker','o',...'MarkerFaceColor',[0.5 1 0.85]);view(3)(3)、绘图(Plot)对象绘图对象的父对象可以是坐标轴对象或是群对象MATLAB中绘图对象及其绘图命令areaseries:用于创建area图barseries:用于创建bar图contourgroup:用于创建contour图errobarseries:用于创建errorbar图lineseries:提供给绘制线型图的plot和plot3等函数使用quivergroup:用于创建quiver和quiver3图形scattergroup:用于创建scatter和scatter3图形stairseries:用于创建阶梯图形stemseries:用于创建stem和stem3图形surfaceplot :提供给surf和mesh群函数使用[x y z]=peaks;[c h]=contour(x,y,z);set(h,'LineWidth',3,'LineStyle',':')(4)、注释对象图形编辑工具栏Insert菜单注释函数x=-2*pi:pi/12:2*pi;y=x.^2;subplot(2,2,1:2)plot(x,y)h1=subplot(223);y=x.^4;plot(x,y)h2=subplot(224)y=x.^5;plot(x,y)%定义注释矩形的位置和大小p1=get(h1,'Position');t1=get(h1,'TightInset');p2=get(h2,'Position');t2=get(h2,'TightInset');x1=p1(1)-t1(1);y1=p1(2)-t1(2);x2=p2(1)-t2(1);y2=p2(2)-t2(2);w=x2-x1+t1(1)+p2(3)+t2(3);h=p2(4)+t2(2)+t2(4);%创建注释矩阵来环绕下面两个子图annotation('rectangle',[x1 y1 w h],...'FaceAlpha',0.2,'FaceColor','red','EdgeColor','red');通用函数get和set1、get函数get(handle,’PropertyName’):得到对象的属性及其属性值Hf_1=figure('color','w')p=get(Hf_1,'position') %位置p=get(Hf_1,'Children') %子对象p=get(Hf_1,'Color') %颜色get(Hf_1) %整个图形的属性2、set函数set(H,’PropertyName’,PropertyValue):可以同时设置多个属性的值set(H,a):a为结构体,字段名为图形对象的属性名,字段值为属性值set(H,pn,pv):通过单元型变量为图形对象进行属性赋值,其中pn和pv为单元型变量,pn 为1*n的字符型单元变量,其分量为图形对象的属性名,pv可以是m*n的单元型变量,这里m为句柄数组H的长度,即m=length(H)x=-2*pi:pi/12:2*pi;y=x.^2+x.^3;h=figure;plot(x,y);set(h,'position',[232 248 560 420])set(h,'units') %帮助set(h,'position') %帮助figure('Color','blue','NumberTitle','off','Name','My Figure')Hf_fig=figureHf_line=lineset(Hf_line)get(Hf_line)x=linspace(-2*pi,2*pi,200);y=sin(x);Hf_sin=plot(x,y);set(Hf_sin,'Color',[1 0.5 0],'LineWidth',3)z=cos(x);hold onHf_cos=plot(x,z);set(Hf_cos,'Color',[0.75 0.75 1])查找对象Hf_fig=gcf:返回当前图形的句柄Hf_ax=gca:返回当前图形的当前坐标轴句柄Hx_obj=gco或是Hx_obj=gco(Hf_fig):获取当前对象findobj函数Hx=findobj(‘P1name’,P1value,…):返回根部和根部以下的那些属性值与findobj参数项匹配的对象句柄Hx=findobj(Objecthandle,‘P1name’,P1value,…):限定在Objecthandle中列出的对象和它们的子对象Hx=findobj(Objecthandle,’flat’,‘P1name’,P1value,…):限定在Objecthandle中列出的对象H=findobj:返回根对象和它所有子对象的句柄H=findobj(Objecthandle):返回Objecthandle中列出的对象和它们的子对象的句柄当前对象的定义:用鼠标刚刚点过的对象x=linspace(-pi,pi,100);y=sin(x);z=cos(x);plot(x,y,'r',x,z,'g');H1_lines=get(gca,'Children');for k=1:size(H1_lines)if get(H1_lines(k),'color')==[0 1 0] %查找图中绿色线条的句柄H1_green(k)=H1_lines(k);endendH1_green堆积次序堆积次序决定哪一对象叠加在其他对象上,最后被创建的对象在堆栈顶部默认属性使用set函数默认属性名:Default+属性名set(0,'DefaultAxesColorOrder',[0 0 0],...'DefaultAxesLineStyleOrder','-|--|:|-.')z=peaks;plot(1:49,z(4:7,:))。
MATLAB程式设计入门篇握把式图形与GUI设计
get 範例
get範例:
>>get(h, 'LineWidth') % 取得曲線寬度
ans =3;
>> get(h, 'Color')
% 取得曲線顏色
ans =
001
>> get(h)
%列出 h 的所有性質的值
…
findobj 範例
uicontrol('style', 'edit', 'position', [200 270 80 30]);
uicontrol('style', 'list', 'position', [200 320 80 30], 'string', '1|2|3|4');
uicontrol('style', 'popup', 'position', [200 370 80 30], 'string', 'one|two|three');
uicontrol('style', 'radio', 'position', [200 120 80 30]);
uicontrol('style', 'frame', 'position', [200 170 80 30]);
uicontrol('style', 'check', 'position', [200 220 80 30]);
MATLAB实现GUI界面
MATLAB实现GUI界面一、搭建最基本的GUI本节通过两个例子进行论述,分别介绍GUI基本操作,即数值运算、数据导入、图形绘制等功能的GUI实现。
A-加法器首先上效果图:输入两个数值,点击Add!,便可显示结果,下面开始逐步介绍。
•GUI新建常用的新建GUI方法有两个:1.mand Window输入guide—>Create New GUI;2.Home—>New—>Graphical User Interface;注意:勾选“Sace new figure as:”,可选择存储路径,并对文件命名。
这里我们选择默认的“Blank GUI(Default)”,点击“OK”,便可进入,本文主要用到以下几个选框:•GUI框架搭建本文为基础内容,框架内修改的主要是点击需要添加的选框至面板中,双击选框,特性中:其中String:显示的名称;Tag:标签,主要用于程序编写时,对变量进行定位;常用:position:指示空间在figure中的位置font**:字体相关属性string:相当如VB中的caption,就是显示在控件上的文字tag:控件的唯一标识符,相当于ID,我们需要tag来指定某一个空间因此,我们只需要设定参与操作的选框tag;对于不涉及操作、仅仅作为显示的选框,其tag我们可以默认。
分析加法器,我们总共需要的选框:其中,涉及操作的有:两个输入(两个编辑文本框)+ 一个执行加法运算的开关(一个确定按钮)+结果显示(一个静态文本框)。
设置完成的效果图:点击“保存”,此时便出现.m和.fig两个文件,加法器的GUI框架搭建完毕。
•GUI对应代码完善步骤一:设定tag、String等参数;首先是回调函数的定位(如果已经退出GUI编辑框,可Command Window输入guilde进入):选中并右键—>Viwe Callbacks—>Callback,即可打开对应的函数模块。
MATLAB 程式设计入门篇握把式图形与GUI设计
MATLAB 程式設計入門篇:握把式圖形與 GUI 設計
MATLAB 7.x 性質編輯器
MATLAB 7.x >>peaks; >>propedit; % 畫出 peaks 3D 圖 % 開啟性質編輯器
MATLAB 程式設計入門篇:握把式圖形與 GUI 設計
MATLAB 7.x
MATLAB 7.x
MATLAB 程式設計入門篇:握把式圖形與 GUI 設計
uicontrol範例1
MATLAB 程式設計入門篇:握把式圖形與 GUI 設計
UI(User Interface)控制物件
Uicontrol產生UI(User Interface)控制物件 按鈕(Push Button) 滑動棒(Sliding Bar) 圓形按鈕(Radio Button) 框架(Frame) 核計方塊(Check Box) 文字欄位(Edit Box) 列表式選單(List Menu) 下拉式選單(Popup Menu)
set範例:
set範例: t = 0:0.1:4*pi; y = exp(-t/5).*sin(t); h = plot(t, y); % h 為曲線的握把 set(h,'Linewidth',3); % 將曲線寬度改為 3 set(h,'Marker','o');%將曲線的線標改成小圓圈 set(h,'MarkerSize',20);% 將線標的大小改成 20
MATLAB 程式設計入門篇:握把式圖形與 GUI 設計
uicontrol範例2
uicontrol範例2: uicontrol('style','check','position',[200 220 80 30]); uicontrol('style','edit','position',[200 270 80 30]); uicontrol('style','list','position',[200 320 80 30],'string', '1|2|3|4'); uicontrol('style','popup','position',[200 370 80 30],'string','one|two|three');
matlab用户图形界面设计GUI
一、菜单设计
• Matlab用户菜单对象是图形窗口的子对象, 所以菜单设计总是在某一个图形窗口中进 行。Matlab的图形窗口有自己的菜单栏, 为了建立用户自己的菜单系统,需要先将 图形窗口的MenuBar属性设置为none,以取 消图形窗口的默认菜单,然后再建立自己 的菜单。 • 取消默认菜单:figure('menubar','none')
• 1.建立用户菜单
• 用户菜单通常包括一级菜单(菜单条)和二级菜单,有时 还需要继续建立下级菜单如三级菜单等。而每一级菜单 又包括若干菜单项。 • 建立用户菜单的函数为:uimenu,根据不同的调用格 式可以创建一级菜单项和子菜单项。 • 建立一级菜单的调用格式: • 一级菜单项句柄=uimenu(图形窗口句柄,属性名1,属 性值1,属性名2,属性值2,…) • 建立子菜单项的调用格式: • 子菜单项句柄=uimenu(一级菜单项句柄,属性名1,属 性值1,属性名2,属性值2,…)
• (5)列表框list box,列表框列出可供选择的一些选项。 • (6)弹出框popup menu,弹出框平时只显示当前选项, 单击右端的下拉箭头即可弹出一个列表框,列出全部 选项,作用和列表框类似。 • (7)编辑框edit box,可供用户输入数据之用,可在编 辑框中提供默认的输入值,随后用户可以修改。 • (8)滑动条slider,滑动条可以用图示的方式输入指定 范围内的一个数值,可以移动滑动条中间的游标来改 变对应的数值。 • (9)静态文本static text,是在对话框中显示的说明性文 字,一般用来给用户提供必要的提示,不能在程序执 行过程中改变文字说明。 • (10)边框frame,主要用于修饰用户界面,使用户界面 更友好,也可用边框在图形窗口中圈出一块区域,将 某些控件对象组织在这块区域中。
MATLAB教程 第十章 图形用户界面GUI制作
第十章 图形用户界面GUI 制作用户界面(或接口)是指:人与机器(或程序)之间交互作用的工具和方法。
如键盘、鼠标、跟踪球、话筒都可成为与计算机交换信息的接口。
图形用户界面(Graphical User Interfaces ,GUI )则是由窗口、光标、按键、菜单、文字说明等对象(Objects )构成的一个用户界面。
用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。
假如读者所从事的数据分析、解方程、计算结果可视工作比较单一,那么一般不会考虑GUI 的制作。
但是如果读者想向别人提供应用程序,想进行某种技术、方法的演示,想制作一个供反复使用且操作简单的专用工具,那么图形用户界面也许是最好的选择之一。
MATLAB 为表现其基本功能而设计的演示程序demo 是使用图形界面的最好范例。
MATLAB 的用户,在指令窗中运行demo 打开那图形界面后,只要用鼠标进行选择和点击,就可浏览那丰富多彩的内容。
即便比较熟悉MATLAB 的读者,在他初次编写GUI 程序时,也会感到棘手。
为使读者获得制作自己GUI 的体验,本章“入门”节提供了一个简单的示例。
读者只要输入所提供的程序,就可引出相应的界面。
本章第2节叙述图形用户界面的设计原则和一般制作步骤。
第3、4节分别介绍用户菜单、用户控件的制作。
出于“由浅入深”的考虑,前4节制作GUI 是通过M 脚本文件实现的。
利用M 函数文件制作GUI ,需要解决数据传递问题,为此专设第5节给予阐述和示例。
这前5节内容对读者理解交互图形界面的工作原理很有帮助。
本章第6节专述MATLAB6.5提供的界面设计工作台的使用。
值得指出:该设计工作台与MATLAB5.3版的设计工具有很大不同。
新的设计工作台显得更成熟、方便。
在此提醒读者,假如要比较准确的理解本章程序和掌握本章内容,请先阅读第9章关于图柄的内容。
10.1 入门【例10.1-1】对于传递函数为1212++=s s G ζ的归一化二阶系统,制作一个能绘制该系统单位阶跃响应的图形用户界面。
利用Matlab的图形用户界面(GUI)功能,设计与实现实验.
(1 利用Matlab 的图形用户界面(GUI )功能,设计与实现实验主界面;(2 实现在“数值计算”图形用户界面中的各项数值计算,如实现Matlab 的线性方程组的求解、数据统计与分析、数值插值、曲线拟合、常微分方程的数值求解等数值计算;(3 利用Matlab 的二维、三维绘图功能,实现图形用户界面(GUI )中的数值计算的可视化,即给出数值计算实例的同时实现该实例的图形化描述。
如下图给出了一个简单的GUI 界面,学生可以参考如下图设计出自己的GUI 界面。
figure('Color' ,[1,1,1],'Position' ,[100,100,700,600],...'Name' , '' , ...'NumberTitle' , 'off' , 'MenuBar' , 'none' ;uicontrol('Style' , 'Frame' , 'Position' ,[0,0.08,0.45,1],...'Units' , 'normalized' , 'Back' ,[0,1,1];XIANQIU=['a=str2num(get(xishu,''String'';', ...'b=str2num(get(changshu,''String'';', ...'b=b'';x=a\b;', ...'set(jieguo,''string'',x;'];uicontrol('Style' , 'Push' , 'Position' ,[0.02,0.92,0.20,0.06],...'String' , 'ÏßÐÔ·½³Ì×éÇó½â', 'Units' , 'normalized' , 'Call' ,XIANQIU;uicontrol('Style' , 'Text' , 'Position' ,[0.01,0.83,0.1,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , 'ϵÊý¾ØÕó', 'Back' ,[0,1,1];xishu=uicontrol('Style' , 'Edit' , 'Position' ,[0.16,0.83,0.25,0.06],... 'Units' ,'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.01,0.72,0.1,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , '³£ÊýÏî¾ØÕó', 'Back' ,[0,1,1];changshu=uicontrol('Style' , 'Edit' , 'Position' ,[0.16,0.72,0.25,0.06],.. .'Units' , 'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Push' , 'Position' ,[0.02,0.63,0.20,0.06],... 'String' ,'Êýֵͳ¼ÆÓë·ÖÎö';uicontrol('Style' , 'Text' , 'Position' ,[0.23,0.63,0.2,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , 'ÔÚϵÊý¾ØÕóÊäÈë¿òÖÐÊäÈëÒª·ÖÎöµÄ¾ØÕó', 'Back' ,[0,1,1];uicontrol('Style' , 'Push' , 'Position' ,[0.06,0.55,0.1,0.05],... 'String' , 'ÊýÖµ²åÖµ';uicontrol('Style' , 'Push' , 'Position' ,[0.22,0.55,0.1,0.05],... 'String' , 'ÇúÏßÄâºÏ';uicontrol('Style' , 'Text' , 'Position' ,[0.005,0.45,0.05,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , 'X' , 'Back' ,[0,1,1];chazhi=uicontrol('Style' , 'Edit' , 'Position' ,[0.05,0.45,0.15,0.06],... 'Units' ,'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.2,0.45,0.05,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , 'Y' , 'Back' ,[0,1,1];nihe=uicontrol('Style' , 'Edit' , 'Position' ,[0.25,0.45,0.15,0.06],... 'Units' ,'normalized' , 'Back' ,[0,1,0];XIANXING=['s=(get(changwei,''String'';', ...'c=(get(tiaojian,''String'';', ...'c_f=dsolve(''s'',''b'',''x'';', ...'set(jieguo,''string'',char(c_f;'];uicontrol('Style' , 'Push' , 'Position' ,[0.02,0.35,0.25,0.06],...'String' , '³£Î¢·Ö·½³ÌÊýÖµÇó½â', 'Units' , 'normalized' , 'Call' ,XIANXING;chengwei=uicontrol('Style' , 'Edit' , 'Position' ,[0.16,0.25,0.25,0.06],.. .'Units' , 'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.01,0.25,0.1,0.05],... 'Units' , 'normalized' ,'Horizontal' , 'center' , ...'String' , '΢·Ö·½³Ì', 'Back' ,[0,1,1];tiaojian=uicontrol('Style' , 'Edit' , 'Position' ,[0.16,0.15,0.25,0.06],.. .'Units' , 'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.01,0.15,0.1,0.05],... 'Units' , 'normalized' ,'Horizontal' , 'center' , ...'String' , '³õÖµÌõ¼þ', 'Back' ,[0,1,1];h_axes=axes('position' ,[0.5,0.15,0.4,0.4];jieguo=uicontrol('Style' , 'text' , 'Position' ,[0.5,0.6,0.45,0.25],... 'Units' , 'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.6,0.85,0.3,0.1],... 'Units' , 'normalized' ,'Horizontal' , 'center' , ...'String' , '½á¹û', 'Back' ,[1,1,1],'FontSize' ,35;uicontrol('Style' , 'Push' , 'Position' ,[0.018,0.02,0.08,0.05],... 'String' , 'Í˳ö', 'Units' , 'normalized' , 'Call' , 'close' ;uicontrol('Style' , 'Push' , 'Position' ,[0.65,0.025,0.08,0.05],...'String' , '°¡Êµ´òʵ', 'Units' , 'normalized' , 'Call' , '»æͼº¯Êý°´Å¥';。
第五讲matlab句柄绘图和GUI
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
轴对象
窗口对象
线 对 象
面对象
10 0
value of the cosine 1
cos(x)=0.707
0.5
0
线对象
cos(x)
-10 20
轴对象
10
00
-0.5
20
10
-1
-5
0 50
像对象100 150 200
1 0.5
0 -0.5
-1 100 200 300
get(gca,'colororder') ans =
110 101 011 100 010 001
• 设置线条和窗口的颜色 set(h1,'color',[1 0 0]) set(h1,'color',[1 0.5 0])
10
10
9
9
8
8
7
7
6
6
5
5
4
4
3
3
set(gcf,'color',[0.5 0.5 0.5]) set(gcf,'color',[0.5 0.6 0.8])
• 句柄图形:利用底层绘图函数,通过对对象属 性的设置(Handle Graphics)与操作实现绘图。
• 句柄图形是一种面向对象的绘图系统,其中所 有图形操作都是针对图形对象而言的。
• 句柄图形充分体现了面向对象的程序设计。 • 之前介绍的高层图形指令(如plot)都是以句柄
图形软件为基础写成的。也正是这个原因,句 柄图形也被称为底层(Low-level)图形。
MATLAB图形显示和GUI设计
第4章MATLAB计算的可视化和GUI设计MATLAB具有非常强大的二维和三维绘图功能,尤其擅长于各种科学运算结果的可视化。
4.1二维曲线的绘制4.1.1基本绘图命令plot1. plot(x) 绘制x向量曲线plot命令是MATLAB中最简单而且使用最广泛的一个绘图命令,用来绘制二维曲线。
语法:plot(x) %绘制以x为纵坐标的二维曲线plot(x,y) %绘制以x为横坐标y为纵坐标的二维曲线说明:x和y可以是向量或矩阵。
【例4.1】用plot(x)命令画直线,如图4.1所示。
x1=[1 2 3]x1 =1 2 3plot(x1)x2=[0 1 0]x2 =0 1 0plot(x2)图4.1 (a) x1曲线 (b) x2曲线2. plot(x,y) 绘制向量x和y的曲线【例4.2】绘制正弦曲线y=sin(x)和方波曲线,如图4.2所示。
x1=0:0.1:2*pi;y1=sin(x1); %y1为x1的正弦函数plot(x1,y1);x2=[0 1 1 2 2 3 ];y2=[1 1 0 0 1 1 ];plot(x2,y2);axis([0 4 0 2]) %将坐标轴围设定为0-4和0-23. plot(x) 绘制矩阵x的曲线【例4.3】矩阵图形的绘制,如图4.3所示。
x1=[1 2 3;4 5 6];plot(x1);x2=peaks; %产生一个49*49的矩阵plot(x2);程序分析:a图中有三条曲线而不是两条曲线,因为矩阵x1有三列,每列向量画一条曲线;b图为由peaks函数生成的一个49×49的二维矩阵,因此产生49条曲线。
4. plot(x,y)绘制混合式曲线当plot(x,y)命令中的参数x和y是向量或矩阵时,分别有以下几种情况:图4.2 (a) 正弦曲线 (b) 方波曲线图4.3 (a) x1曲线 (b) x2曲线▪如果x是向量,而y是矩阵,则x的长度与矩阵y的行数或列数必须相等,如果x 的长度与y的行数相等,则向量x与矩阵y的每列向量对应画一条曲线;如果x的长度与y 的列数相等,向量x与y的每行向量画一条曲线,如果y是方阵,则x和y的行数和列数都相等,将向量x与矩阵y的每列向量画一条曲线;▪如果x是矩阵,而y是向量,则y的长度必须等于x的行数或列数,绘制的方法与前一种相似;▪如果x和y都是矩阵,则大小必须相同,矩阵x的每列和y的每列画一条曲线。
Matlab GUI图形界面设计
补充实例(my_callbackf.m): 建立一个图形窗口。该图形窗口没有菜单条,标题名称为“我的图形 窗口”,起始于屏幕左下角、宽度和高度分别为450像素点和260像素 点,背景颜色为绿色,且当用户从键盘按下任意一个键时,将在该图 形窗口绘制出正弦曲线,点击鼠标时绘制余弦曲线。
hf=figure('Color',[0,1,0],'Position',[1,1,450,260],... 'Name','我的图形窗口','NumberTitle','on','MenuBar','none',... 'KeyPressFcn','plot(sin(0:0.01:2*pi))','WindowButtonDownFcn','plot(cos(0 :0.1:2*pi),''r*'')');
?1创建一个空白的gui界面?2创建控件?3调整控件布局?4设置各控件的tab顺序?5设置控件的属性?6编写回调函数?7运行gui界面程序3gui开发环境的常用工具?1控件面板?按钮pushbutton其上的字符说明其作用?静态文本statictext一般用来作为信息提示用?文本框edittext读取用户数据的文字窗口?面板panel概括一组控件也可以修饰用?列表框listbox包含多个选项供用户选择?滚动条slider图示某个范围?切换按钮togglebutton两状态按钮单击改变其状态
6.2.4 按钮、滚动条和文本框控件
1.控件的通用属性 (1)Tag属性 图形对象的标识,是所有图形对象
06第六章句柄图形和用户图形界面设计.
(5)Visible:控件是否可见。
2018/12/16
7
属性设计器
二、对象的常规信息 (1)Enable属性: 表示此控件的使能状态,设置为on”,表示可选,为“off” 时则表示不可选。 (2)Style:控件对象类型。 (3)Tag:控件表示(用户定义)。
(4)TooltipString属性:提示信息显示。当鼠标指针位于此控件上时,显示
2018/12/16
6
属性设计器
一、控件风格和外观 (1)BackgroundColor:设置控件背景颜色,使用[R G B]
或颜色定义。
(2)CData:在控件上显示的真彩色图像,使用矩阵表示。 (3)ForegroundColor:文本颜色。 (4)String属性:控件上的文本,以及列表框和弹出菜单 的选项。
h=figure(1)
h=1 返回值为窗口号数
例:h=line(1:6,1:6)创建线对象的同时也建立了一个唯
一的句柄 变量h是句柄值——浮点数
2018/12/16 32
图形对象属性的获得与设置
要设置图形对象属性值,首先要知道该对象的句柄,基 本方法有以下几种。 从图形创建指令获取
追溯法获取句柄
当前对象句柄的获取
2018/12/16
13
公用对话框文件
文件选择对话框 颜色选择对话框 字体选择对话框 页面设置对话框
uigetfile
uisetcolor uisetfont pagedlg warndlg errordlg helpdlg
14
警告与错误信息对话框 简单帮助信息对话框
2018/12/16
句柄图形中所有图形操作都是针对图形对象
而言的。
MatlabGUI图形用户界面设计[1]
在命令窗口输入命令或点击工具栏中的图标都可以打开空白的布局编辑器,在命令窗口输入 可打开一个已存在的名为图形用户界面。
① 将控件对象放置到布局区
用鼠标选择并放置控件到布局区内; 移动控件到适当的位置; 改变控件的大小; 选中多个对象的方法。
在设计窗口中显示的结果是不一样的。
图形用户界面设计 窗口由菜单栏、工具栏、 控件工具栏以及图形对 象设计区等4个功能区 组成。
左图为空白 模板情形
设计窗口的菜单栏 有、、、、和 6个菜单 项,使用其中的命令可 以完成图形用户界面的 设计操作。
编辑工具在菜单栏的下方,提供了常用的工具;设计工具区位于窗口的左半部分,提供了 设计过程中所用的用户控件;空间模板区是网格形式的用户设计的空白区域。
菜单编辑器左上角的第四个与第五个按钮用于对选中的菜单进行左移与右移,第六与第七 个按钮用于对选中的菜单进行上移与下移,最右边的按钮用于删除选中的菜单。
5. 对象浏览器( ) 利用对象浏览器,可以查看当前设计阶段的各个句柄图形对象。可以在对象浏览器中选中
一个或多个控件来打开该控件的属性编辑器。
对象浏览器的打开方式有: ① 从设计窗口的工具栏上选择 命令按钮; ② 选择菜单下的 子菜单; ③ 在设计区域单击鼠标右键,选择弹出菜单
对象位置调整器中的第一栏是垂直方向的位置调整,第二栏是水平方向的位置调整。 在选中多个对象后,可以方便的通过对象位置调整器调整对象间的对齐方式和距离。
3. 用属性查看器设置控件属性 利用对象属性查看器,可以查看每个对象的属性值,也可以修改、设置对象的属性值。
① 打开属性查看器( ) 对象属性查看器的打开方式有四种: 从设计窗口工具栏上选择 命令按钮;
北航matlab课件第五讲句柄图形和GUI
自动化科学与电气工程学院
句柄图形与GUI
句柄图形
对象句柄的获取方法 通过get函数获取对象的句柄 如果图形对象已知,可以在程序中通过get函数获取图形对象的句柄。 H_pa=get(H_known,PV) H_pa=get(H_known,’Parent’) 获取H_known句柄对象之父对象的句柄 H_ch=get(H_known,’Children’) 获取H_known句柄对象之子对象的句柄 >> get(H_mesh,'Children') ans = Empty matrix: 0-by-1 >> get(H_mesh,'Parent') ans = 158.0062
>> view(3) >> text('Position',[.5 .5 .5],'String','Hello')
自动化科学与电气工程学院
句柄图形与GUI
句柄图形
对象句柄的获取方法 通过图形创建命令获取对象的句柄 在Matlab中无论使用高层命令还是底层命令都可以通过以下指令获取句柄。 H_GC=GraphicCommand(……….) >> H_mesh=mesh(peaks(20)) H_mesh = 159.0073
父对象
子对象
兄弟对象
自动化科学与电气工程学院
句柄图形与GUI
句柄图形
对象属性 所有对象都有一组定义和描述其外貌和性状的属性(Properties)。 属性有两个部分组成:属性名和属性值。 用户不仅可以查询当前对象的任意属性值,在创建图形对象的时候还可以指定大多 数属性的取值。
>> get(gcf) Color = [0.8 0.8 0.8] Colormap = [ (64 by 3) double array] CurrentAxes = [158.003] CurrentObject = [] NextPlot = add Position = [363 214 560 420] Children = [158.003] Parent = [0]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一般制作步骤
界面制作包括界面设计和程序实现。具体制作 步骤如下:
(1)分析界面所要求实现的主要功能,明确设计任务。 (2)构建界面草图,并站在使用者的角度来审查草图。 (3)按构思的草图.制作(静态)界面并检查。 (4)编写界面动态功能的程序,对功能进行逐项检查。
[说明]
以上过程,仅是一般原则。在设计中,步骤之间也许要交叉 执行或复合执行。 设计和实现过程往往需要反复修改才能获得满意的界面。 建议先进行界面布局编码,后进行动态交互功能的编码。
• •
不同的界面效果直接影响相关感受,所以精心设计很有必要。请看示例
4
设计过程
明确设计任务 构建界面草图,并审查
制作静态界面
添加动态功能
是否满足要求
2019/1/29
5
示例
简洁
色彩Βιβλιοθήκη 功能好的界面方便
2019/1/29
6
设计工具(GUIDE)
为了能够简单、方便地进行GUI的设计与开发工作, MATLAB提供了一套方便、实用的GUI设计工具。 MATLAB中的GUI设计工具包括以下几个:
2019/1/29 7
对象设计编辑器 (Layout Editor)
• 在MATLAB命令窗口 内,选择File主菜单的 New子菜单,会看到 一个GUI的二级子菜单, 单击它,就会显示对 象设计编辑器(Layout Editor);也可以在 MATLAB命令窗口的 命令行上输入guide, 显示对象设计编辑器。 启动窗口如右图所示。
2019/1/29 3
界面编程需要注意的事项
• 用户界面适合软件的功能(合适 性)。是指用户界面与软件功能 相融洽的程度。要避免用户的误 解、费解等。另外,不能为适应 某种体系结构的优势而导致界面 的不合适性。 容易理解。如果通过界面难以理 解界面的意图,使用起来一定费 力。容易理解是容易应用的前提。 要做到这一点:(1)界面中不能 有错字。(2)图标按钮含义直观 明了。(3)界面元素提供充分而 必要的提示。(4)界面结构能够 清晰的反映工作流程,以便用户 操作。 及时反馈信息。 防错处理。
2019/1/29 10
菜单编辑器(2)
• 图中左上角第一个按钮用于创建下拉式菜单。用户可以通过点击它, 来创建下拉式主菜单。第二个按钮用于创建下拉式主菜单的子菜单, 在选中已经创建的下拉式主菜单后,可以单击这个按钮来创建选中的 下拉式主菜单的子菜单。选中创建的某个下拉式菜单,菜单编辑器的 右边就会显示该菜单的有关属性,可以在这里设置、修改菜单的属性。 • 菜单编辑器界面的左下角有两个按钮,选择第一个按钮,可以创建 下拉式菜单,选择第二个按钮,可以创建context Menu菜单(类似于弹 出式菜单)。选择它后,图中左上角的第三个按钮就会变成可用,单 击它可以创建Context Menu主菜单。在选中已经创建的Context Menu主菜单后,可以单击第二个按钮创建选中的Context Menu主菜 单的子菜单。与下拉式菜单一样,选中创建的某个Context Menu菜单, 菜单编辑器的右边就会显示该菜单的有关属性,可以在这里设置、修 改菜单的属性。
2019/1/29 12
图形界面制作-菜单
• 在绝大多数的图形用户界面下,都包含有菜单。 通过选择各级菜单,可以执行相应的命令,实现 相应的功能。一般地,从菜单的标题或名字可以 大概了解该菜单的功能。在Windows系统中,菜 单一般位于用户图形界而的顶端。例如, MATLAB的主窗口中,就有一个主菜单栏,包括 File、Edit、View、Help等主菜单。在各级主菜单 下,还有相应的子菜单。 • 在MATLAB图形用户界面(GUI)设计中,有两种菜 单类型,分别是下拉式菜单类型Uimenu和内容式 菜单类型Uicontextmenu。
对象设计编辑器(Layout Editor)(有的书上成为布局编辑器): 在图形窗口内创建、安排各种对象 。 菜单编辑器(Menu Editor) :创建、设置、修改下拉式菜单和 内容式菜单; 对象属性查看器(Property Inspector):可查看每个对象的属 性值,也可修改、设置对象的属性值;
(1)简单性 : 设计界面时,力求简洁、直观、清晰地体现出界面的功能和特征。 (2)一致性: 所谓一致性有两层含义:一是读者自己开发的界面风格要尽量一致;二 是新设计的界面要与其他已有的界面风格不要截然相左。这是因为用户在 初次使用新界面时,总习惯于凭经验进行试探。比方说,图形显示区常安 排在界面左半边,而按键等控制区被排在右侧。 (3)其他考虑因素: 除了以上对界面的静态要求外,还应注意界面的动态性能。如界面对用 户操作的响应要迅速、连续;对持续时间较长的运算,要给出等待时间提 示,并允许用户中断运算。
图形用户界面的作用
假如进行数据分析、解方程等计算结果比较 单一的工作,那么一般不会考虑GUI的制作。 但是如果想向别人提供应用程序,想进行 某种技术、方法的演示,想制作一个供反 复使用且操作简单的专用工具,那么图形 用户界面也许是最好的选择之一。
2019/1/29
1
设计原则
由于要求不同,设计出来的界面也就千差万别。但是,自从人们开始设计图形界 面以来,界面设计的评判标准却没有太大的变化。简单来说,一个好的界面应遵 循以下三个原则 :
2019/1/29 8
对象设计编辑器 (Layout Editor)
2019/1/29
9
菜单编辑器
• 利用菜单编辑器,可 以创建、设置、修改 下拉式菜单和内容式 菜单。从对象设计编 辑器界面的工具条上 或从菜单栏中Tools 的下拉菜单中选择 Menu Editor ,就可 以看到菜单编辑器 (Menu Editor)的界面, 如右图所示。
2019/1/29
11
对象属性查看器
• 利用对象属性查看器,可 以查看每个对象的属性值, 也可以修改、设置对象的 属性值,从对象设计编辑 器界面工具条,或者选择 view菜单下的Inspect Property子菜单,就可以 看到对象属性查看器的界 面。另外,在MATLAB命 令窗口的命令行上输入 inspect,也可以看到对象 属性查看器。如右图所示。
2019/1/29
•
• 风格一致和必要的个性化。风 格一致的好处是可以减少用户 的记忆量,减少出错几率,并 迅速积累操作经验。必要个性 化是使用户对软件留下深刻印 象。合理布局。 • 合理色彩。难,不同的人对颜 色的喜好不同。另外不可过分 依靠色彩,因为用户有可能是 色盲或色弱。 • 适应用户群体和国际化。 • 最少的操作步骤。 • 可以复用。