找回密码
 立即注册
查看: 254|回复: 0

MATLAB图形用户界面设计(二)

[复制链接]
发表于 2022-10-12 08:29 | 显示全部楼层 |阅读模式
图形窗口的操作
图形窗口是显示图形和用户界面的窗口,用户可建立多个图形窗口,每一个图形窗口可以作为其他图形对象的父对象,即:当做坐标轴、控件等对象的容器,MATLAB通过figure函数来创建窗口对象,调用格式如下:
句柄变量=figure(属性1,属性值1,属性2,属性值2,…),其中属性用于设置图形窗口的呈现方式。
句柄变量=figure,调用时不带参数即按MATLAB默认的属性值建立图形窗口。
figure(窗口句柄),设定该句柄对应的窗口为当前窗口,随后的操作都是在这个窗口中实施的。

图形窗口属性:
MenuBar属性:控制图形窗口是否具有菜单条,其取值为‘none’或者‘figure’。
Name属性:指定图形窗口的标题,一般情况下,图形窗口的默认标题形式为Figure n,这里n是图形窗口的序号。
NumberTitle属性:决定着在图形窗口的标题中是否以“Figure n:”为前缀。
Color属性:设定图形窗口背景的颜色。
Position属性:定义图形窗口在屏幕上的位置和大小,值是一个4元行向量[x,y,w,h],x,y分别为窗口左下角的横纵坐标值,w,h分别为窗口的宽度和高度 ,由此可知画图时x+w不可以大于1, y+h不可以大于1
Units属性:定义图形窗口使用的长度单位,由此决定图形窗口的大小和位置,值可以是‘pixels’(像素),‘inches’(英寸),‘centimeters’(厘米),‘points’(磅),‘normalized’(相对单位,屏幕左下角为0,0,右上角为1.0,1.0),默认值为像素。
例3:建立一个图形窗口。该图形窗口没有菜单条,标题名称为“图形窗口示例”,
起始于屏幕左下角、宽度和高度分别为300像素点和150像素点,背景颜色为青色,
且当用户从键盘按下任意一个键时,然后在窗口中单击鼠标左键,在鼠标指针所在位置将显示“Hello,World!” 。
hf=figure; %按默认属性建立图形窗口
hf.Color=[0,1,1]; %背景色设置为青色
hf.Position=[1,1,300,150]; %宽度高度分别为300像素点和150像素点
hf.Name='图形窗口示例'; %设置标题
hf.NumberTitle='off'; %设置标题不显示前缀
hf.MenuBar='none';        %设置图形窗口没有菜单条
hf.WindowButtonDownFcn='gtext(''Hello,World!'')';%当用户在图形窗口单击鼠标左键时,显示Hello,World!
注:text(x,y,图形说明)和gtext(图形说明)介绍,text函数的前两个参数x、y用于设置文本出现的位置,gtext函数没有坐标参数,执行命令时十字光标跟随鼠标移动,单击鼠标即可将文本放置在十字光标处。

坐标轴的操作:
坐标轴对象是图形窗口的子对象,每个图形窗口中可以定义多个坐标轴对象,但只有一个坐标轴是当前坐标轴,坐标轴对象是图形对象的父对象,即当做图形对象的容器,再没有指明坐标轴时,所有的图形对象都是在当前坐标轴中输出。
①建立坐标轴对象使用axes函数
句柄变量=axes(属性1,属性值1,属性2,属性值2,..),属性用于设置坐标轴的特征。
句柄变量=axes,不带参数则按MATLAB默认的属性值在当前图形窗口创建坐标轴。
axes(坐标轴句柄),如果axes函数的参数是坐标轴句柄,则设定该句柄代表的坐标轴为当前坐标轴。
②坐标轴对象的属性
Position属性:定义坐标轴在图形窗口中的位置和大小,用法和图形窗口
Units属性:定义坐标轴使用的度量单位。
Box属性:决定坐标轴是否带边框,可以取的值为'on'或者'off'。
GridLineStyle属性:用于定义网格线的类型,取值可以是 ':'、'-'、'-.'、'- -'或'none'。
Title属性:用于对坐标轴标题对象进行操作,取值是通过title函数建立的标题对象的句柄。
XLabel、YLabel、ZLabel属性:取值分别是通过xlabel、ylabel、zlabel函数建立的坐标轴标签的句柄。
XLim、YLim、ZLim属性:用于定义各坐标轴的下限和上限,取值是向量[Lmin,Lmax],默认值为[0,1]。
XScale、YScale、ZScale属性:用于定义各坐标轴的刻度类型,可取值为‘linear’、‘log’,分别是线性坐标和对数坐标。
View属性:用于定义视角,取值是[az,el],az定义视点的方位角,el定义视点的仰角。
例4:利用坐标轴对象实现图形窗口的分割。
ha1=axes('Position',[0.1,0.1,0.7,0.7]);%当前图形窗口建立一个坐标轴,[x,y,w,h]为[0.1,0.1,0.7,0.7]
contour(peaks(20))
ha1.Title=title('等高线');
ha1.YLabel=ylabel('南北向');
ha1.XLabel=xlabel('东西向');
ha2=axes('Position',[0.65,0.7,0.28,0.28]);%在图形窗口的右上角建立一个新的坐标轴,[x,y,w,h]为[0.65,0.7,0.28,0.28]
surf(peaks(20))%绘制尖峰函数图
ha2.View=[-30,45];%设置当前坐标轴的视点位置

曲线对象的操作
⑴建立曲线对象:
曲线对象既可以定义在二维坐标系中,也可以定义在三维坐标系中,建立曲线对象使用line函数,其调用格式:
句柄变量=line(x,y,z,属性1,属性值1,属性2,属性值2,…),其中x,y,z存储数据点的坐标,与plot、plot3函数含义相同,参数x,y,z是同型的向量或矩阵,存储数据点的坐标,与plot函数不同的是,plot函数每调用一次就会刷新一次坐标轴,清空原有图形再绘制新的曲线,而line函数生成的曲线是在已有图形上叠加显示
⑵曲线对象常用属性
Color属性:定义曲线的颜色,默认值为[0,0,0],即黑色
LineStyle属性:定义线型,默认设置为‘-’
LineWidth属性:定义线宽,默认值为0.5磅
Marker属性:定义数据点标记符号,默认值为‘none’
MarkerSize属性:定义数据点标记符号的大小,默认值为6磅
XData,YData,ZData属性:设置三个坐标轴的数据源,值是数值向量
例1:利用曲线对象绘制五环图案。
t=-0.1 : 0.1 : 2*pi;%将t的初值设为-0.1保证圆环封闭
x=cos(t);  y=sin(t);
line(x,y,'Color','b')
line(x+1.2,y-1,'Color','y')
line(x+2.4,y,'Color','k')
line(x+3.6,y-1,'Color','g')
line(x+4.8,y,'Color','r')
ha=gca;%获取当前坐标轴句柄
for n=1:size(ha.Children)
    ha.Children(n).LineWidth=5;
end%将坐标轴的所有子对象的LineWidth属性修改为5,即所有曲线宽度为5
ha.XLim=[-2,7];
ha.YLim=[-3,2];%设置坐标轴呈现区域大小,使得图形位于坐标轴中间
axis equal

曲面对象:
(1)句柄变量=surface(x,y,z,c,属性1,属性值1,属性2,属性值2,..)其中x,y,z存储数据点的坐标,与surf函数含义相同,c用于指定不同高度下的曲面颜色,c省略时默认等于z,其中x,y,z为同型矩阵,x,y为网格坐标矩阵,z是网格点上的高度矩阵,surf每调用一次会刷新坐标轴,清空原有图形,再绘制新的图形,而surface函数生成的曲面,则在已有图形上叠加显示,默认视点方位角为0,仰角为90.
(2)与曲面形态有关的属性
FaceColor属性:定义曲面网格片的颜色,可取值有五种
'flat':每一个网格片用单一颜色填充
'interp':用渐变方式填充网格片
'none':网格片无颜色
'texturemap':用Cdata属性定义的颜色填充网格片
RGB向量或代表颜色的字符
EdgeColor属性:定义曲面网格线的颜色
与FaceColor属性值基本相同,没有texturemap,默认为[0,0,0]
例2  利用曲面对象绘制立体圆环
r=linspace(0,2*pi,60);
[u,v]=meshgrid(r);
x=(8+3*cos(v)).*cos(u);
y=(8+3*cos(v)).*sin(u);
z=3*sin(v);
axes('view',[-37.5,30]) %建立坐标轴并且指定视点的位置
hs=surface(x,y,z);
axis equal;

hs.EdgeColor='none';%设置曲面无网格线
hs.FaceColor='interp';%设置曲面网格用插值模式填充,使得表面网格间颜色的渐变更加平滑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-25 00:57 , Processed in 0.093037 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表