购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第1章
GUI图形的层次结构

在MATLAB中使用纯代码编写GUI的方法适用性非常好,它基于.m或者.mlx脚本文件,几乎用任何版本的MATLAB纯代码生成的GUI都不会出现版本不兼容的问题,这种编写方法结合“使用ASCII表示中文字符”的方法,是非常可靠的GUI编写方法。该方法并没有像GUIDE和App Designer那样流行,因为它需要编程者熟知每种控件的编写代码和属性,在界面排版方面没有在画布上拖放控件直观、快捷,但是该方法容易入门,使用相对简单。本书将每个控件用到的属性一一列出并对其做解释,方便读者查询和使用。

下面3个示例演示了采用代码编写GUI的不同属性设置。

下面一段代码展示了按钮随着窗口大小的改变而改变,起到这个作用的关键字为'Units', 'normalized',这是一对名值(Name,Value)参数对,逗号前面为属性名,后面是该属性的值。Units为单位(大小的量度),normalized的意思为归一化。

f1=figure('Units', 'centimeters', …
    'position',[2 6 6 6],'menubar','none', …
    'numbertitle','off','resize','on');
str='<html>会当凌绝顶,<br>一览众山小。</html>';
h1=uicontrol('Style', 'pushbutton', …
    'Units', 'normalized','FontSize', 12, …
    'position', [0.2 0.4 0.6 0.3], 'string', str);

运行结果如图1-1所示。

图1-1 运行结果(1)

Units属性指定为表1-1中的一个值。

表1-1 Units属性的值及说明

Position属性的值[left bottom width height]代表[与父容器左边的距离 与父容器底边的距离 该控件的长度 该控件的高度]。

无论采用什么单位,生成的对象的位置都是以父容器左下角为基准进行测量的。

Units属性会影响Position属性。如果编程者更改Units属性的值,则比较好的做法是在完成该段代码运行后将其恢复为默认值,以便不影响其他假定Units属性为默认值的函数。

如果编程者在创建对象时以名值参数对的形式指定Position属性和Units属性,则指定顺序很重要。如果想用特定单位定义位置,则必须在设置Position属性之前设置Units属性。

下面一段代码展示了单位为厘米,并且增加了前景色为蓝色、字体为斜体的示例。如果不指定父容器,则MATLAB给出默认的父容器,该父容器的大小可以在命令行窗口输入f=get (figure); f.Position语句来获取。运行结果如图1-2所示。

str='<html>欲穷千里目,<br>更上一层楼。</html>';
h2=uicontrol('Style', 'pushbutton', 'FontSize', 12, …
    'Units', 'centimeters','position', [3,3,3,2], …
    'string', str,'ForegroundColor','blue', …
    'FontAngle','Italic');

图1-2 运行结果(2)

下面一段代码展示了颜色设置的另一种方式——用矩阵代表颜色。运行结果如图1-3所示。

str='<html>欲穷千里目,<br>更上一层楼</html>';
h3=uicontrol('Style', 'pushbutton', …
    'FontSize', 12,'String', str);
h3.Position=[50 50 150 80];
set(h3,'ForegroundColor',[1,0,1]);

图1-3 运行结果(3)

从上面的示例可以看出,代码不仅可以写为一句长代码,也可以分段书写。

上面的示例涉及图形对象、图形对象句柄、图形对象属性、图形句柄操作等内容。 8+rYW2a3Z0Q9tXOmlbL2fL0zrrjsn+tA8VUCvUoRrjlGBoqYfsCv/GPc7uErXymw

点击中间区域
呼出菜单
上一章
目录
下一章
×