Presentation is loading. Please wait.

Presentation is loading. Please wait.

第五讲 matlab句柄绘图 ——matlab语言的句柄绘图可以对图形各基本对象进行更为细腻的修饰,可以产生更为复杂的图形,而且为动态图形的制作奠定了基础。

Similar presentations


Presentation on theme: "第五讲 matlab句柄绘图 ——matlab语言的句柄绘图可以对图形各基本对象进行更为细腻的修饰,可以产生更为复杂的图形,而且为动态图形的制作奠定了基础。"— Presentation transcript:

1 第五讲 matlab句柄绘图 ——matlab语言的句柄绘图可以对图形各基本对象进行更为细腻的修饰,可以产生更为复杂的图形,而且为动态图形的制作奠定了基础。

2 高层绘图与底层绘图的区别 高层绘图函数——是对整个图形进行操作的,图形每一部分的属性都是按缺省方式设置的,充分体现了matlab语言的实用性。 底层绘图函数——可以定制图形,对图形的每一部分进行控制,用户可以用来开发用户界面以及各专业的专用图形。充分体现了matlab语言的开发性

3 一、什么是句柄图形 句柄图形:利用底层绘图函数,通过对对象属性的设置(Handle Graphics)与操作实现绘图。
句柄图形中所有图形操作都是针对图形对象而言的。 句柄图形充分体现了面向对象的程序设计。

4 句柄图形的功能 句柄图形可以随意改变matlab生成图形的方式。
句柄图形允许你定制图形的许多特性,无论是对图形做一点小改动,还是影响所有图形输出的整体改动。 句柄图形的特性高层绘图函数是无法实现的

5 二、图形对象和句柄 引例: x=0:2*pi/180:2*pi; y1=sin(2*x); y2=cos(2*x);
图形对象—— 图形系统中最基本、最底层的单元 引例: x=0:2*pi/180:2*pi; y1=sin(2*x); y2=cos(2*x); plot(x,y1,x,y2)

6 图形对象的基本要素以根屏幕为先导  图形对象之间的关系为父代与子代的关系 窗口1 窗口n 窗口2 界面控制 界面菜单 轴 线 面 字
根屏幕 父对象 子对象 图形对象之间的关系为父代与子代的关系

7 说明: 根:图形对象的根,对应于计算机屏幕,根只有一个,其它所有图形对象都是根的后代。 图形窗口: 根的子代,窗口的数目不限,所有图形窗口都是根屏幕的子代,除根之外,其它对象则是窗的后代。 界面控制:图形窗口的子代,创建用户界面控制对象,使得用户可采用鼠标在图形上作功能选择,并返回句柄。

8 界面菜单: 图形窗口的子代,创建用户界面菜单对象
轴:图形窗口的子代,创建轴对象,并返回句柄,线面字块像的父辈 线:轴的子代,创建线对象 面:轴的子代,创建块对象 字:轴的子代,创建字对象 块:轴的子代,创建块对象 像:轴的子代,创建图像对象

9 窗口对象 线对象 轴对象

10 面对象 线对象 轴对象 文字对象 块对象 像对象

11 2.创建图形对象的底层函数 figure创建图形窗口 调用格式: h=figure(n) n为窗口序号
uicontrol图形界面控制 调用格式: h=uicontrol(‘property’,value) property/value确定控制类型

12 h=uimenu(‘property’,value) property/value 确定菜单形式。 axes  创建轴对象
调用格式: h=uimenu(‘property’,value) property/value 确定菜单形式。 axes  创建轴对象 h=axes(‘property’, ) 定义轴对象的位置与大小 left, bottom width,height

13 h=patch(x,y,z,c) x,y,z定义多边形,c确定填充颜色。
line  创建线对象 h=line(x,y,z) patch  创建块对象 h=patch(x,y,z,c) x,y,z定义多边形,c确定填充颜色。 surface  创建面对象 h=surface(x,y,z,c) x,y,z三维曲面坐标,c颜色矩阵。 三维画线 二维画线

14 h=text(x,y,’string’) 每个底层函数只能创建一个图形 对象,并将它们置于适当的父辈对象 中。 image  显示图象
h=image(x); x为图像矩阵 text  标注文字 h=text(x,y,’string’) 每个底层函数只能创建一个图形 对象,并将它们置于适当的父辈对象 中。 确定标注位置 标注字符串

15 3.图形对象的属性 ※ 图形对象是由属性来描述的 例如: figure 大小位置 [ ] 颜色 [ 0 0 0]  省缺 line a. x, y 数据;b. 线的颜色 c. 线型; d. 线宽

16 ※但句柄绘图中上述图形对象都是用户需要经常使用的,所以要作到心中有数,用句柄设置图形对象的属性。
※在高层绘图中对图形对象的描述一般是省缺的或由高层绘图函数自动设置的,因此对用户来说几乎是不透明的。 ※但句柄绘图中上述图形对象都是用户需要经常使用的,所以要作到心中有数,用句柄设置图形对象的属性。

17 4.句柄(handle)与句柄操作 什么是句柄? 句柄是图形对象的标识代码,标识代码含有图形对象的各种必要的属性信息。
各图形对象的句柄数据格式: 根屏幕 图形窗口 整数,表示图形窗口数 其它对象 对应的符点数

18 所有能创建图形对象的matlab函数都可给出所创建图形对象的句柄
例:创建1号窗口,返回句柄 h=figure(1) h=1 返回值为窗口号数 例:h=lien(1:6,1:6)创建线对象的同时也建立了一个唯一的句柄 变量h是句柄值——符点数

19 二、图形对象属性的获得与设置 句柄属性的设置与修改 get: 获得句柄图形对象的属性和返回某些 对象的句柄值 set: 改变图形对象的属性
专用函数: gcf:当前窗口对象的句柄 Get Current Figure gca:当前轴对象的句柄 Get Current Axes

20 操作格式: h=gcf 将当前窗口对象的句柄返回h get(h)或get(gcf) 查阅当前窗口对象的 属性 delete(gcf) 删除当前窗口的属性 例:h=line(x,y) get(h) get(get(gca,’children’) 轴的子代

21 例:创建一个线对象并返回线对象的句柄值 h1=line([0:10],[0:10]) h1 = h1为句柄的代码值

22 查阅线对象的属性名称和属性值 get(h1) Color = [1 1 0] EraseMode = normal
LineStyle = - LineWidth = [0.5] MarkerSize = [6] Xdata = [ (1 by 11) ] Ydata = [ (1 by 11) ] Zdata = []

23 ButtonDownFcn =. Children = []. Clipping = on. Interruptible = no
ButtonDownFcn = Children = [] Clipping = on Interruptible = no Parent = [ ] Type = line UserData = [] Visible = on 根据轴是线对象的父代,可查轴的句柄 get(gca)

24 可查色序 get(gca,'colororder') ans =

25 设置线条和窗口的颜色 set(h1,'color',[1 0 0]) set(h1,'color',[ ])

26 set(gcf,'color',[ ]) set(gcf,'color',[ ])

27 例:作正弦、余弦曲线,将正弦曲线改为虚 线,将余弦曲线幅度减为1/2高度,如何用 句柄实现。 x=0:2*pi/180:2*pi; y1=sin(x);y2=cos(x); plot(x,y1,x,y2,x,zeros(size(x) ),'w:')

28 首先查询各对象的属性 get(gcf) · h=get(gcf,'children') h = 60.0004
hh=get(gca,'children') hh =

29 修改属性 y11=get(hh(2),'ydata'); y22=y11/2; set(hh(2),'ydata',y22) set(hh(3),'linestyle',':')

30 三、对象的属性操作 对象属性的直接操作 对象属性的直接操作是通过当前句柄来 实现的,所以首先要获得当前句柄值以及
※ 控制一个图形对象是通过句柄实现的,具体是通过句柄操作函数get,set将某对象句柄属性作设置与修改。 对象属性的直接操作 对象属性的直接操作是通过当前句柄来 实现的,所以首先要获得当前句柄值以及 对象的属性,然后再查询或修改。

31 get(h) get(h,’ propertyname’) set(h) set(h,’propertyname’,value) set(h,’属性名称’,‘新属性’) ‘color’, ’r’ ‘linestyle’, ’:’ ‘figurecolor’, ’m’

32 Dfault+对象名称+对象属性 2.对象属性的继承操作 对象属性的继承操作是通过父代对象,设置省缺对象属性来实现的。
父代句柄属性中设置省缺值后,所有子代对象均可以继承该属性的省缺值。 属性省缺值的描述结构为: Dfault+对象名称+对象属性

33 DefaultAxesAspaceRatio —— 轴的视图比率 DefaultLineLineWide —— 线的宽度
如:DefaultFigureColor —— 图形窗口的颜色 DefaultAxesAspaceRatio —— 轴的视图比率 DefaultLineLineWide —— 线的宽度 DefaultLineColor —— 线的颜色 ※省缺值的获得与设置也是由get,set函数实现的

34 set(h,'DefaultLineColor','r') ——设置线的 颜色为红色 例:在图上添加文字注释,颜色为红色
例: get(0,'DefaultFigureColor') —— 获得图形 窗口的省缺值 set(h,'DefaultLineColor','r') ——设置线的 颜色为红色 例:在图上添加文字注释,颜色为红色 set(gca,'DefaultTextColor',[1 0 0]) gtext('正弦') gtext('余弦') 在轴对象上设置字对象的颜色省缺值为红色 继承该省缺值在图上添加红色的文字注释

35 例:在轴对象上(父代对象)设置线的颜色省缺值为红色
x=0:2*pi/180:2*pi; y=sin(2*x); set(gca,'DefaultLineColor',[1 0 0]); h=line(x,y) h = set(h,'color','default')

36 例:x=0:2*pi/180:2*pi;y=sin(2*x);
h=line(x,y) set(0,'DefaultFigureColor',[ ]) —— 将所有新图形窗口的颜色由省缺值黑色设置为适中的灰色

37 set(h,'color','m','linewidth',2,'linestyle','*')
?

38 set(0,'defaultfigurecolor','b')
set(0,'defaultaxescolor','g') h=line(x,y) set(h,'color','r') set(gca,'xcolor','w') set(gca,'ycolor','w')

39 h=surf(peaks(30)) set(0,'defaultsurfaceedgecolor','w') set(h,'edgecolor','default')

40 例:set(gca,'defaultlinecolor','remove') set(h,’color’,’factory’)
4.其它操作 default —— 由父代继承 factory —— 厂家设定省缺值 remove —— 清除设定省缺值 例:set(gca,'defaultlinecolor','remove') set(h,’color’,’factory’) 注意:plot,line命令遵循colororder色序对设置省缺值无效,

41 四、其他功能介绍 菜单函数menu K= MENU(HEADER, ITEM1, ITEM2, ... ) 例:
K = nemu('请选择','plot','mesh','surf')

42

43 Guide

44 Uimenu:设计GUI菜单函数 UIMENU('PropertyName1',value1, 'PropertyName2',value2,...) Uicontrol:用来在图形窗口中建立控件 UICONTROL('PropertyName1', value1,'PropertyName2,'value2,...)

45 5.matlab5属性编辑器 Propedit ---- 打开属性编辑器

46 小 结 熟悉图形对象句柄与句柄操作 掌握图形对象属性的查询与操作 能够任意设置图形对象的属性


Download ppt "第五讲 matlab句柄绘图 ——matlab语言的句柄绘图可以对图形各基本对象进行更为细腻的修饰,可以产生更为复杂的图形,而且为动态图形的制作奠定了基础。"

Similar presentations


Ads by Google