matlab-note-8

matlab-note-8

Charles Lv7

matlab-note-8

image-20230208173302665

MATLAB图形用户界面设计

图形窗口与坐标轴

图形对象的句柄

句柄的概念

在MATLAB中,每一个具体的图形都是由若干个不同的图形对象组成的。在MATLAB中,用句柄来标识对象,通过句柄来访问相应对象的属性。

访问图形对象

访问图形对象是指获取或设置图形对象的属性。不同图形对象所具有的属性不同,但访问的方法是一样的。

1
2
3
4
5
6
x = 0:pi / 10:2 * pi;
y = sin(x);
h0 = plot(x, y);
h0.Color
h0.LineWidth = 2;
h0.LineStyle = '-.';
获取特定图形对象句柄的函数
  • gcf:获取当前图形窗口的句柄。
  • gca:获取当前坐标轴的句柄。
  • gco:获取最近被选中的图形对象的句柄。
  • findobj:按照指定的属性来获取图形对象的句柄。

图形对象的属性

图形对象的常用公共属性
  • Children属性:该对象的所有子对象的句柄组成的一个向量。
  • Parent属性:该对象的父对象的句柄。
  • Type属性:对象的类型,这是一个只读属性。
  • Tag属性:用于给对象定义一个标识符。
图形对象的常用动态属性
  • KeyPressFcn属性:定义按下键盘按键事件的响应。
  • CreateFcn属性:定义创建图形对象时做出的响应。
  • DeleteFcn属性:定义取消图形对象时做出的响应。
  • WindowButtonDownFcn或ButtonDownFcn属性:定义鼠标键按下事件的响应。

图形窗口的操作

建立图形窗口对象

MATLAB通过figure函数来创建窗口对象,其调用格式为:

  • 句柄变量=figure(属性1,属性值1,属性2,属性值2,…)其中,属性用于设置图形窗口的特征。
  • 句柄变量=figure按MATLAB默认的属性值建立图形窗口。
  • figure(窗口句柄)设定该句柄对应的窗口为当前窗口。
图形窗口属性
  • MenuBar属性:控制图形窗口是否具有菜单条,其取值为’none’或’figure’。
  • Name属性:指定图形窗口的标题。
  • NumberTitle属性:决定着在图形窗口的标题中是否以“Figure n:”为标题前缀。
  • Color属性:设定图形窗口背景的颜色。
图形窗口的属性
  • Position属性:定义图形窗口对象在屏幕上的位置和大小,值是一个4元行向量:[x,y,w,h]
  • Units属性:定义图形窗口使用的度量单位,将影响一切定义大小的属性项。
    • ‘pixels’:指定度量单位为像素(默认值)。
    • ‘inches’:指定度量单位为英寸。厘米、磅。
    • ‘centimeters’:指定度量单位为厘米。
    • ‘points’:指定度量单位为磅。
    • ‘normalized’:指定用相对单位。

坐标轴的操作

建立坐标轴对象

使用axes函数,其调用格式为:

  • 句柄变量=axes(属性1,属性值1,属性2,属性值2,…)其中,属性用于设置坐标轴的外观和行为。
  • 句柄变量=axes按MATLAB默认的属性值在当前图形窗口创建坐标轴。
  • axes(坐标轴句柄)设定该句柄代表的坐标轴为当前坐标轴。
坐标轴对象的属性
  • Position属性:定义坐标轴在图形窗口中的位置和大小。
  • Units属性:定义坐标轴使用的度量单位,默认值是’normalized’。
  • Box属性:决定坐标轴是否带有边框,可取值是’on’或’off’(默认值)。
  • GridLineStyle属性:用于定义网格线的类型,可取值是’:’(默认值)、’-’、’-.’、’–’、‘none’。
  • Title属性:用于对坐标轴标题对象进行操作,取值是通过title函数建立的标题对象的句柄。
  • XLabel、YLabel、ZLabel属性:取值分别是通过xlabel、ylabel、zlabel函数建立的标签对象的句柄。
  • XLim、YLim、ZLim属性:分别定义各坐标轴的下限和上限,取值是2元向量[Lmin,Lmax],默认值为[0,1]。
  • XScale、YScale、ZScale属性:定义各坐标轴的刻度类型。可取值是’linear’、‘log’。
  • View属性:定义视点,取值是2元向量[az,el],az定义视点的方位角,el定义视点的仰角。坐标轴默认视点的方位角为0°,仰角为90°。

曲线与曲面对象

曲线对象

建立曲线对象

line函数的调用格式为:句柄变量=line(x, y, z,属性1,属性值1,属性2,属性值2,…)其中,x、y、z存储数据点的坐标,与plot、plot3函数含义相同。

曲线对象常用属性
  • Color属性:定义曲线的颜色,默认值为[0 0 0]。
  • LineStyle属性:定义线型,默认值为’-’。
  • LineWidth属性:定义线宽,默认值为0.5磅。
  • Marker属性:定义数据点标记符号,默认值为’none’。
  • MarkerSize属性:定义数据点标记符号的大小,默认值为6磅。
  • XData、YData、ZData属性:用于设置3个坐标轴的数据源。

曲面对象

建立曲面对象

建立曲面对象使用surface函数,其调用格式为:句柄变量=surface(x,y,z,c,属性1,属性值1,属性2,属性值2,…)

其中,x、y、z存储数据点的坐标,与mesh、surf函数含义相同;c用于指定在不同高度下的曲面颜色。

surf函数每调用一次,就会刷新坐标轴,清空原有图形,再绘制新的图形。而surface函数生成的曲面则在已有图形上叠加显示。

利用surface函数建立的曲面对象,默认视点在图形正上方,即方位角为0°,仰角为90°。

与曲面形态有关的属性
  • FaceColor属性:定义曲面网格片的颜色,可取值:
    • ‘flat’:每一个网格片用单一颜色填充。
    • ‘interp’:用渐变方式填充网格片。
    • ‘none’:网格片无颜色。
    • ‘texturemap’:用Cdata属性定义的颜色填充网格片。
    • RGB向量或代表颜色的字符
  • EdgeColor属性:定义曲面网格线的颜色。

光照处理

创建光源对象

light函数的调用格式为:对象句柄=light(属性1,属性值1,属性2,属性值2,…)其中,属性指定光源的特性。

光源对象的属性
  • Color属性:设置光的颜色。
  • Style属性:设置光源类型,其取值为‘infinite’(默认值)或’local’。
  • Position属性:指定光源位置,值是一个3元向量。
设置光照模式

利用lighting命令可以设置光照模式,lighting命令格式为:lighting选项

其中,选项可取值为

  • flat:使得入射光均匀洒落在图形对象的每个面上(默认值)。
  • gouraud:先对顶点颜色插补,再对顶点勾画的面上颜色进行插补。
  • phong:对顶点处的法线插值,再计算各个像素的反光。
  • none:关闭所有光源。

图形对象的反射特性

  • SpecularStrength属性:控制对象表面镜面反射的强度,属性值取0~1之间的数,默认为0.9。
  • DiffuseStrength属性:控制对象表面漫反射的强度,属性值取0~1之间的数,默认为0.6。
  • AmbientStrength属性:确定环境光的强度,属性值取0~1之间的数,默认为0.3。
  • SpecularExponent属性:控制镜面反射指数,值大于等于1,大多设置在[5 20]之间,默认为10。
  • BackFaceLighting属性:控制对象内表面和外表面的差别,取值为
    • ‘unlit’
    • ‘lit’
    • ‘reverselit’(默认值)

图形用户界面设计方法

图形用户界面的组成

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

控件对象及其操作

常用控件
  • 输入和输出类控件:编辑框、静态文本、列表框、滑动条等。
  • 实施确认、选择操作类控件:按钮、双位按钮、单选按钮、复选框等。
建立控件对象

函数uicontrol用于建立控件对象,其调用格式为:句柄变量=uicontrol(图形窗口句柄,属性1,属性值1,属性2,属性值2,…)

其中,属性及其取值决定了控件的特征。若省略图形窗口句柄,默认在当前图形窗口建立控件对象。

控件对象的基本控制属性
  • Style属性:定义控件对象的类型,例如‘pushbutton’表示按钮对象,'edit’表示编辑框,等等。
  • String属性:定义控件对象的说明文字。
  • Tag属性:标识控件对象。
  • Enable属性:控制控件对象是否可用。
  • Position属性:定义控件对象的位置,其取值形式为[x,y,w,h]。
  • Callback属性:其属性值是描述命令的字符串或函数句柄,当选中控件时,系统将自动执行字符串描述的命令或调用句柄所代表的函数,实施相关操作。

菜单对象及其操作

建立菜单对象

uimenu函数用于创建、设置、修改菜单。

  • 建立一级菜单项的函数调用格式为:一级菜单项句柄=uimenu(图形窗口句柄,属性,属性值1,属性2,属性值2,…)
  • 建立子菜单项的函数调用格式为:子菜单项句柄=uimenu(上级菜单项句柄,属性1,属性值1,属性2,属性值2,…)
菜单属性
  • Label属性:定义菜单项的名字。
  • Accelerator属性:定义菜单项的快捷键。
  • Checked属性:指示菜单项是否已选中。
  • Enable属性:控制菜单项的可选择性。
  • Separator属性:在菜单项上方添加一条分隔线。

用户界面设计工具

图形界面设计窗口

打开GUIDE
  • 在MATLAB命令行窗口输入guide命令。
  • 在MATLAB主窗口中选择“主页”选项卡,单击工具栏的“新建”命令按钮,再选择“应用程序”下的GUIDE命令。
图形用户界面设计模板
  • Blank GUI (Default)
  • GUI with Uicontrols
  • GUI with Axes and Menu
  • Modal Question Dialog
图形用户界面设计窗口

图形用户界面设计窗口由菜单栏、工具栏、组件选项板、界面设计区、状态栏等部分组成。

图形用户界面设计工具

  • 对齐对象工具
  • 菜单编辑器
  • Tab键顺序编辑器
  • 工具栏编辑器
  • 代码编辑器
  • 对象属性检查器
  • 对象浏览器

定义回调函数

回调属性
  • Callback属性:按钮类控件和菜单项的单击事件的默认回调属性。
  • CreateFcn属性:定义创建图形对象的响应。
  • DeleteFcn属性:定义取消图形对象的响应。
  • ButtonDownFcn属性:定义单击鼠标键按下的响应。
  • KeyPressFcn属性:定义键盘键按下的响应。
  • SelectionChangeFcn属性:定义改变选项的响应。
回调函数框架

function对象标识_Callback(hObject, eventdata, handles)

其中,hObject为发生事件的源控件,eventdata为事件数据,handles保存图形界面中所有对象的句柄。

APP设计工具

AppDesigner的使用

App Designer是一个可视化的集成开发环境,提供了仪表、旋钮等组件,采用面向对象的设计方法。利用App Designer可以快速开发出应用程序。

App组件

  • 常用组件
  • 容器组件
  • 仪器组件

App程序

App程序采用面向对象设计模式,声明对象、定义函数、设置属性和共享数据都封装在一个类中,一个MLAPP文件就是一个类的定义。

  • Title: matlab-note-8
  • Author: Charles
  • Created at : 2023-02-03 22:42:12
  • Updated at : 2023-08-17 09:48:25
  • Link: https://charles2530.github.io/2023/02/03/matlab-note-8/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments