MATLAB图形句柄
- 格式:ppt
- 大小:756.00 KB
- 文档页数:35
matlab handles用法MATLAB 图形用户界面 (GUI) 的一个重要组成部分是 handles 句柄。
在 GUI 设计中,handles 句柄可以用于访问和修改 GUI 界面中的各种元素,包括按钮、文本框、列表框、图像等。
本文将介绍 handles 句柄的用法,包括创建 handles 句柄、使用 handles 句柄访问和修改 GUI 元素以及处理事件等方面。
一、创建 handles 句柄1.1 在 GUIDE 中创建 handles 句柄在使用 GUIDE(GUI 开发环境)创建 GUI 界面时,handles 句柄已经预定义好了,只需要在 GUI 设计界面中添加 UI 元素,就会自动为元素分配一个 handles 句柄。
例如在 GUI 界面中添加一个 PushButton 按钮,编号为 pushbutton1。
在 MATLAB脚本程序中可以使用如下代码获取该按钮的 handles 句柄:```handles.pushbutton1```1.2 在 MATLAB 代码中创建 handles 句柄如果不使用 GUIDE 创建 GUI 界面,可以通过自己编写 MATLAB 代码的方式来创建界面和 handles 句柄。
首先需要创建一个 GUI 窗口,例如:```f = figure('Units', 'normalized', 'Position', [0.2 0.2 0.6 0.6]);```使用 uicontrol 函数创建一个按钮,例如:```hButton = uicontrol('Parent', f, 'Style', 'pushbutton', 'String', 'Push Me', 'Position', [10 10 80 30]);```这段代码中,hButton 是创建的按钮的句柄,f 是 GUI 窗口的句柄。
【转】matlab图形句柄详解(⼀)在matlab中,每⼀个对象都有⼀个数字来标识,叫做句柄.当每次创建⼀个对象时,matlab就为它建⽴⼀个唯⼀的句柄,句柄中包含有该对象的相关信息参数,可以在后续程序中进⾏操作,改变其中的参数,以便达到不同的效果。
例如:gcf 是返回当前被激活的窗⼝的句柄。
你可以认为它就指代当前窗⼝。
figure(gcf)打开这个窗⼝。
句柄式图形常⽤函数:所有对象都有属性来定义它们的特征,正是通过设定这些属性来修正图形显⽰的⽅式。
尽管许多属性所有的对象都有,但与每⼀种对象类型(⽐如坐标轴,线,曲⾯)相关的属性列表都是独⼀⽆⼆的。
对象属性可包括诸如对象的位置、颜⾊、类型、⽗对象、⼦对象及其它内容。
每⼀个不同对象都有和它相关的属性,可以改变这些属性⽽不影响同类型的其他对象。
和每⼀种对象类型(图形,坐标轴,线,⽂本,曲⾯,补⽚和图象)相关的完整的属性列表在本章的后⾯给出。
对象属性包括属性名和与它们相联关的值。
属性名是字符串,它们通常按混合格式显⽰,每个词的开头字母⼤写,⽐如:’ LineStyle ‘ 。
但是,MATLAB识别⼀个属性时是不分⼤⼩写的。
另外,只要⽤⾜够多的字符来唯⼀地辨识⼀个属性名即可。
例如,坐标轴对象中的位置属性可以⽤ ‘ Position ‘, ‘ position ‘ ,甚⾄是 ‘ pos ‘来调⽤。
当建⽴⼀个对象时,它⽤⼀组缺省属性值,该值可以⽤两种⽅法来改变:改变默认属性值⽅法1:» Hf_1=figure( ‘color’, ‘white’ )它⽤缺省的属性值建⽴⼀个新的图形窗⼝,只是背景颜⾊被设为⽩⾊⽽不是缺省的[0.8 0.8 0.8](灰⾊)。
改变默认属性值⽅法2:为了获得和改变句柄图形对象(如上⾯的Hf_1)的属性只需要两个函数:函数get返回某些对象属性的当前值。
使⽤函数get的最简单语法是get(handle, ‘ PropertyName’ )。
matlab图形操作本⽂对matlab中利⽤图形句柄对图⽚属性进⾏设置的操作进⾏简单的总结说明:(1)对图窗和坐标轴属性进⾏整体设置可以通过gcf和gca语句获取当前图窗句柄和坐标轴句柄,通过该句柄可以对图窗和坐标轴的各项属性进⾏操作。
图窗和坐标轴分别包含如下属性:% 图窗属性... ...Children: [1×1 Axes] Color: [0.9400 0.9400 0.9400]Colormap: [256×3 double] CurrentAxes: [1×1 Axes]... ...InnerPosition: [680 558 560 420] PaperUnits: 'centimeters'OuterPosition: [672 550 576 514] Position: [680 558 560 420]Units: 'pixels'% 坐标轴属性... ...Box: 'on' BoxStyle: 'back'Children: [1×1 Line] Color: [1 1 1]FontAngle: 'normal' FontName: 'Helvetica'FontSize: 10 FontSizeMode: 'auto'FontSmoothing: 'on' FontUnits: 'points'FontWeight: 'normal' GridColor: [0.1500 0.1500 0.1500]GridLineStyle: '-' Legend: [0×0 GraphicsPlaceholder]LineWidth: 0.5000 OuterPosition: [0 0 1 1]Parent: [1×1 Figure] Position: [0.1300 0.1100 0.7750 0.8150]Title: [1×1 Text] TitleFontWeight: 'normal'Units: 'normalized' UserData: []View: [0 90] Visible: 'on'... ...XAxis: [1×1 NumericRuler] XAxisLocation: 'bottom'XColor: [0.1500 0.1500 0.1500] XColorMode: 'auto'XDir: 'normal' XGrid: 'off'XLabel: [1×1 Text] XLim: [0 100]XScale: 'linear' XTick: [0 10 20 30 40 50 60 70 80 90 100]XTickLabel: {11×1 cell} XTickLabelRotation: 0YAxis: [1×1 NumericRuler] YColor: [0.1500 0.1500 0.1500]YGrid: 'off' YLabel: [1×1 Text]YLim: [0 100] YScale: 'linear'YTick: [0 10 20 30 40 50 60 70 80 90 100] YTickLabel: {11×1 cell}YTickLabelRotation: 0 ZLabel: [1×1 Text]ZLim: [-1 1] ZScale: 'linear'ZTick: [-1 0 1] ZTickLabel: ''ZTickLabelRotation: 0... ...上⾯仅仅是展⽰了图窗和坐标轴部分重要且常⽤的属性,它们的全部属性可通过查matlab的帮助⽂档或直接在matlab的命令⾏上输⼊gcf、gca或通过如下图所⽰的属性窗⼝进⾏查询和设置。
matlab图形句柄属性句柄式图形常用函数:(1)get(h)返回句柄值h所指定的图形对象的所有属性名称与相对应的属性值(2)a = get(h)返回由句柄值h所指定的图形对象的属性结构数组,并且该数组的字段名称就是该对象的属性名称。
(3)a = get(0,'factory')返回所有能由用户设置的属性的默认定义值。
(4)a = get(0,'FactoryObjectTypePropertyName1','FactoryObjectTypePropertyName2',...) 返回指定对象类型指定的属性值,输入参数FactoryObjectTypePropertyName为一个关键词,由字符Factory与图形对象类型(如Figure)还有属性名称(如Color)组成。
a = get(0,'factoryFigureColor')返回Figure对象的Color属性值。
(5)a = get(h,'DefaultObjectTypePropertyName1','DefaultObjectTypePropertyName1',...) 返回句柄值为h的对象指定属性的默认值。
如“DefaultFigureColor”。
(6)a = get(h,'default')列出h对象的所有属性的默认属性值(7)a = set(h)返回句柄值h所指定的图形对象的所有属性名称对应的可设置属性值,a为结构数组,存储对象的属性名称,其字段值为相对应的属性值。
属性值中用{}括起来的表示默认值。
(8)set(h,a)使用指定的属性值来设置由句柄值h所指定的对象属性,a为结构数组,其字段名称为对象的属性名称,字段值为相对应的属性值。
(9)a = set(0,'factory')返回那些用户可以设置默认值的所有对象的属性,同时显示可设置的属性值。
句柄图形句柄图形对象句柄图形是对底层图形例程集合的总称,实际上是进行生成图形的工作句柄图形的概念:一幅图的每一组成部分是一个对象,每一个对象有一系列句柄和它相关,每一个对象又按需要可以改变属性1、图形框架窗口对象(Figure)(1)、绘制图形的图形框架窗口对象gca:获得当前坐标轴对象的句柄gcbf:获得当前正在执行调用的图形对象的句柄gcbo:获得当前正在执行调用的对象的句柄gcf:获得当前图形对象的句柄gco:获得当前对象的句柄get(gcf) %由于当前状态下不存在图形窗口,系统生成新的图形窗口(2)、核心(Core)对象核心对象:包括直线、文本和特殊对象(光、图像和面图)等基本的绘图命令坐标系对象:包括线、面图和等高线图等描述的数据对象MATLAB中创建核心对象的函数axes:坐标轴image:MATLAB中的图像light:光源line:二维图形中最基本的图形对象patch:按指定方式填充多边形rectangle:具有可设置边界和表面颜色的二维图形对象surface:图形表面text:图形中的文本[x y]=meshgrid([-2:0.4:2]);Z=x.*exp(-x.^2-y.^2);fh=figure('Position',[350 275 600 450],'Color','w');ah=axes('Color',[0.8 0.8 0.8],'XTick',[-2 -1 0 1 2],...'YTick',[-2 -1 0 1 2]);sh=surface('XData',x,'YData',y,'ZData',Z,...'FaceColor',get(ah,'Color')+0.1,...'EdgeColor','k','Marker','o',...'MarkerFaceColor',[0.5 1 0.85]);view(3)(3)、绘图(Plot)对象绘图对象的父对象可以是坐标轴对象或是群对象MATLAB中绘图对象及其绘图命令areaseries:用于创建area图barseries:用于创建bar图contourgroup:用于创建contour图errobarseries:用于创建errorbar图lineseries:提供给绘制线型图的plot和plot3等函数使用quivergroup:用于创建quiver和quiver3图形scattergroup:用于创建scatter和scatter3图形stairseries:用于创建阶梯图形stemseries:用于创建stem和stem3图形surfaceplot :提供给surf和mesh群函数使用[x y z]=peaks;[c h]=contour(x,y,z);set(h,'LineWidth',3,'LineStyle',':')(4)、注释对象图形编辑工具栏Insert菜单注释函数x=-2*pi:pi/12:2*pi;y=x.^2;subplot(2,2,1:2)plot(x,y)h1=subplot(223);y=x.^4;plot(x,y)h2=subplot(224)y=x.^5;plot(x,y)%定义注释矩形的位置和大小p1=get(h1,'Position');t1=get(h1,'TightInset');p2=get(h2,'Position');t2=get(h2,'TightInset');x1=p1(1)-t1(1);y1=p1(2)-t1(2);x2=p2(1)-t2(1);y2=p2(2)-t2(2);w=x2-x1+t1(1)+p2(3)+t2(3);h=p2(4)+t2(2)+t2(4);%创建注释矩阵来环绕下面两个子图annotation('rectangle',[x1 y1 w h],...'FaceAlpha',0.2,'FaceColor','red','EdgeColor','red');通用函数get和set1、get函数get(handle,’PropertyName’):得到对象的属性及其属性值Hf_1=figure('color','w')p=get(Hf_1,'position') %位置p=get(Hf_1,'Children') %子对象p=get(Hf_1,'Color') %颜色get(Hf_1) %整个图形的属性2、set函数set(H,’PropertyName’,PropertyValue):可以同时设置多个属性的值set(H,a):a为结构体,字段名为图形对象的属性名,字段值为属性值set(H,pn,pv):通过单元型变量为图形对象进行属性赋值,其中pn和pv为单元型变量,pn 为1*n的字符型单元变量,其分量为图形对象的属性名,pv可以是m*n的单元型变量,这里m为句柄数组H的长度,即m=length(H)x=-2*pi:pi/12:2*pi;y=x.^2+x.^3;h=figure;plot(x,y);set(h,'position',[232 248 560 420])set(h,'units') %帮助set(h,'position') %帮助figure('Color','blue','NumberTitle','off','Name','My Figure')Hf_fig=figureHf_line=lineset(Hf_line)get(Hf_line)x=linspace(-2*pi,2*pi,200);y=sin(x);Hf_sin=plot(x,y);set(Hf_sin,'Color',[1 0.5 0],'LineWidth',3)z=cos(x);hold onHf_cos=plot(x,z);set(Hf_cos,'Color',[0.75 0.75 1])查找对象Hf_fig=gcf:返回当前图形的句柄Hf_ax=gca:返回当前图形的当前坐标轴句柄Hx_obj=gco或是Hx_obj=gco(Hf_fig):获取当前对象findobj函数Hx=findobj(‘P1name’,P1value,…):返回根部和根部以下的那些属性值与findobj参数项匹配的对象句柄Hx=findobj(Objecthandle,‘P1name’,P1value,…):限定在Objecthandle中列出的对象和它们的子对象Hx=findobj(Objecthandle,’flat’,‘P1name’,P1value,…):限定在Objecthandle中列出的对象H=findobj:返回根对象和它所有子对象的句柄H=findobj(Objecthandle):返回Objecthandle中列出的对象和它们的子对象的句柄当前对象的定义:用鼠标刚刚点过的对象x=linspace(-pi,pi,100);y=sin(x);z=cos(x);plot(x,y,'r',x,z,'g');H1_lines=get(gca,'Children');for k=1:size(H1_lines)if get(H1_lines(k),'color')==[0 1 0] %查找图中绿色线条的句柄H1_green(k)=H1_lines(k);endendH1_green堆积次序堆积次序决定哪一对象叠加在其他对象上,最后被创建的对象在堆栈顶部默认属性使用set函数默认属性名:Default+属性名set(0,'DefaultAxesColorOrder',[0 0 0],...'DefaultAxesLineStyleOrder','-|--|:|-.')z=peaks;plot(1:49,z(4:7,:))。
第10章 MATLAB图形对象句柄习题10一、选择题1.MA TLAB图形系统的根对象是指()。
AA.计算机屏幕B.图形窗口C.坐标轴D.用户界面对象2.以下不正确的选项是()。
DA.坐标轴是图形窗口对象的子对象B.图形对象的句柄变量相当于对象名C.可以通过对象的句柄来设置或获取对象的属性D.gcf函数可以获取当前对象的句柄3.使用figure 函数建立图形窗口时,默认的标题是()。
CA.图形窗口n(n是数字)B.Fig n(n是数字)C.Figure n(n是数字)D.Figure Window n(n是数字)4.用于决定坐标轴对象是否带边框的属性是()。
AA.Box B.Grid C.Position D.Font 5.下列命令中,除一条命令外其他三条命令等价,这一条命令是()。
BA.line(x,y,'Color','r'); B.line(x,y,'r');C.plot(x,y,'Color','r'); D.plot(x,y,'r');6.命令patch([0,1/2,1], [0,tan(pi/3)/2,0], [1,0,0])执行后得到的图形是()。
CA.红色的等腰三角形B.绿色的等腰三角形C.红色的等边三角形D.白色的四边形二、填空题1.H代表一根曲线,要设置曲线的属性可以使用函数,要获取曲线的属性可以使用函数。
set(H,属性名,属性值),get(H,属性名)2.MA TLAB中表示颜色可以用表示,也可以用表示。
字符,RGB三元组3.用于标识图形对象的属性是属性,可以通过函数获取该属性所对应图形对象的句柄。
在屏幕对象及其子对象中查找标识符为ppp的对象,并返回其句柄,可使用命令。
Tag,findobj,hf=findobj(0,'Tag','ppp')4.使用axes 函数可以在中创建对象。