matlab-note-8
matlab-note-8
MATLAB图形用户界面设计
图形窗口与坐标轴
图形对象的句柄
句柄的概念
在MATLAB中,每一个具体的图形都是由若干个不同的图形对象组成的。在MATLAB中,用句柄来标识对象,通过句柄来访问相应对象的属性。
访问图形对象
访问图形对象是指获取或设置图形对象的属性。不同图形对象所具有的属性不同,但访问的方法是一样的。
1 | x = 0:pi / 10:2 * pi; |
获取特定图形对象句柄的函数
- 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.