对象间的关系保存在Parent属性和Children属性中。例如,坐标区的父级是一个图窗。坐标区的Parent属性包含该坐标区所在图窗的句柄。同样,图窗的Children属性包含其所含的所有坐标区,还包含其所含的其他所有对象,如图例和用户界面对象。
用户可以使用父子关系找到其他对象句柄。例如,如果绘制一个图形,当前坐标区的Children属性包含所有线条的句柄,代码如下,运行结果如图1-7所示。
plot(rand(5)) ax=gca; ax.Children ans= 5x1 Line array: Line Line Line Line Line
图1-7 运行结果(1)
用户还可以指定对象的父级。例如,创建一个组对象,让该组对象成为坐标区中线条的父级,即让新生成的图形在上一个图形的基础上显示,代码如下,运行结果如图1-8所示。
hg=hggroup; plot(rand(5),'Parent',hg)
图1-8 运行结果(2)
综上所述,使用代码编写GUI,就是通过设置图形对象属性、定义默认值等来实现GUI的创建和修改。
用户可以通过设置特定图形对象的属性来控制其行为和外观。要设置属性,可通过创建该对象的函数将其以输出参数的形式返回。例如,使用plot函数返回图形线条对象,然后,使用圆点表示法查看和设置属性。
p=plot(1:10,1:10); p.LineWidth=3;
用户也可以在创建对象时使用名值参数对设置属性,例如plot(1∶10,1∶10,'LineWidth',3)。大多数绘制图形函数都支持名值参数对,名值参数对也是常用的属性设置方法,可以一次赋予多个属性值。
用代码创建GUI大致可分为两大类,一类是基于uifigure函数创建,另一类是基于figure函数创建。图形对象有很多,包含放置对象的容器、坐标区、图窗工具、检测组件、可扩展组件,以及对话框和通用通知等。
基于figure函数创建的对象、布局、对话框和通知、控制流,以及App数据和预设见表1-2~表1-6。
表1-2 对象
表1-3 布局
表1-4 对话框和通知
表1-5 控制流
表1-6 App数据和预设
本书在介绍对象属性的时候,如字体中的FontName、FontSize、FontWeight、FontAngle、FontUnits,交互性中的Visible、Enable、Tooltip、ContextMenu,回调执行控制中的Interruptible、BusyAction、BeingDeleted,以及标识符中的Tag、UserData等,由于其在不同对象中含义是一致的,因此在最先出现的时候会做详细介绍,后文不重复介绍。