Matlab_GUI gcf、gca 以及gco 的区别用法
gcf 返回当前Figure 对象的句柄值
gca 返回当前axes 对象的句柄值
gco 返回当前鼠标单击的句柄值,该对象可以是除root 对象外的任意图形对象,并且Matlab 会把当前图形对象的句柄值存放在Figure 的CurrentObject属性中。
2.matlab下的图形对象
图形对象是用以显示图形和用户界面元素的基本元素。下表列出了各种图形对象。
对象 | 描述 |
Root | 对计算机屏幕最高级的对象 |
Figure | 用来显示图形和用户界面的窗口 |
Axes | 在窗口中显示图形的轴 |
Uicontrol | 用户界面控制。执行一个对用户交互作用的函数。 |
Uimenu | 用户定义窗口菜单 |
Uicontextmenu | 右键单击对象时弹出的菜单 |
Image | 二维像素基础图 |
Light | 影响斑点和表面对象着色的光源 |
Line | 用于诸如plot, plot3, semilogx 等函数的线 |
Patch | 带边缘的填充多边形 |
Rectangle | 二维形状,从矩形到椭圆 |
Surface | 由x-y 平面以上的数据值所作图创建的矩阵数据的三维表示 |
Text | 字符串 |
3. 图形对象级别
不同对象分布在一个树形结构级别里,反映它们的独立性。例如,线对象是在轴对象的框架下的。依次,轴对象只存在于figure 对象中。要想对gcf、gca 以及gco 之间的区别进一步的了解,MATLAB 中的句柄图形的了解是必要的,以下部分是MATLAB 句柄图形中关于gcf、gca 以及gco的部分,供大家参考。
句柄图形
什么是句柄图形?句柄图形是对底层图形例程集合的总称,它实际上进行生成图形的工作。这些细节通常隐藏在图形M 文件的内部,但如果想使用它们也是可得到的。
MATLAB 用户指南给人的一种印象是,句柄图形非常复杂,只对熟练的高级用户才有用。而实际上不是这样的。句柄图形可以被任何人用来改变MATLAB生成图形的方式,不论是只想在一幅图里做一点小变动,还是想做影响所有图形输出的全局变动。
句柄图形允许你定制图形的许多特性,而这用高级命令和前几章里描述的函数是无法实现的。例如,如果想用橘黄色来画一条线,而不是plot 命令中可用的任何一种颜色,该怎么做呢?句柄图形就可以提供一种方法。本章不对句柄图形作详细讨论,因为那样涉及问题太细。这里的目的只是对句柄图形概念作基本了解,并提供足够多的信息,使得即使是偶尔使用一下MATLAB 的用户也可以利用句柄图形。
在这个背景下,在本章最后给出了关于句柄图形对象属性和它们的值,它不仅很有用也很有意义。
4. 谁需要句柄图形?
开始,我们要强调本章主要是针对那些不满足于MATLAB 普通图形特性的读者。如果对所画的图形已经很满意,那么就跳过当前的讨论。如果以后要定制
图形,只要记住这里有可用的信息。
现在,对于那些还在犹豫的用户,我们要强调学习使用句柄图形并不困难。如果只想改变图形的标题字体,或者改变一个图形窗口的背景颜色,那么,你不必成为一个句柄图形的专家也可做到。另一方面,如果想定制图形,并且要打算对图形的每个可能方面进行控制,那么句柄图形会为此提供强有力的工具。前面那些章提供的图形功能被认为是高级的命令和函数,包括plot,mesh,axis 及其它。这些函数是建立在底层函数和属性的基础上,总称为句柄图形。
什么是句柄图形对象
句柄图形是基于这样的概念,即一幅图的每一组成部分是一个对象,每一个对象有一系列句柄和它相关,每一个对象有按需要可以改变的属性。当今计算机行业最流行的术语之一便是对象这个词。面向对象的编程语言,数据库对象,操作系统和应用程序接口都使用了对象的概念。一个对象可以被粗略地定义为由一组紧密相关、形成唯一整体的数据结构或函数集合。在MATLAB中,图形对象是一幅图中很独特的成分,它可以被单独地操作。由图形命令产生的每一件东西都是图形对象。它们包括图形窗口或仅仅说是图形,还有坐标轴、线条、曲面、文本和其它。这些对象按父对象和子对象组成层次结构。
计算机屏幕是根对象,并且是所有其它对象的父亲。图形窗口是根对象的子对象;坐标轴和用户界面对象(在下一章讨论)是图形窗口的子对象;线
条、文本、曲面、补片和图象对象是坐标轴对象的子对象。
根可包含一个或多个图形窗口,每一个图形窗口可包含一组或多组坐标轴。所有其它的对象(除了在下一章讨论的uicontrol 和uimenu 外)都是坐标轴的子对象,并且在这些坐标轴上显示。所有创建对象的函数当父对象或对象不存在时,都会创建它们。例如,如果没有图形窗口,plot(rand(size([1:10])))函数会用缺省属性创建一个新的图形窗口和一组坐标轴,然后在这组坐标轴内画线。
句柄对象
假设已打开了三个图形窗口,其中两个有两幅子图。并要改变其中一幅子图坐标轴内一条线的颜色,如何认定想要改变的那条线?在MATLAB 中,每一个对象都有一个数字来标识,叫做句柄。
每次创建一个对象时,就为它建立一个唯一的句柄。计算机屏幕作为根对象常常是0。? Hf_fig=figure 命令建立一个新的图形窗口,变量Hf_fig 中返回它
的句柄值。图形窗口的句柄为整数,通常显示在图形窗口标题条中。其它对象句柄是MATLAB 满精度的浮点值。
MATLAB 可以用来获得图形、坐标轴和其它对象的句柄。例如,Hf_fig=gcf返回当前图形窗口的句柄值,而 Ha_ax=gca 返回当前图形窗口内当前坐标轴
的句柄值。这些函数和其它对象操作的工具在本章以后讨论。
为了提高可读性,在本书中包含句柄对象的变量取名以大写的H 开头,跟之以一个辨识对象类型的字母,然后是一个下划线,最后是一个或几个描述符。
因此,Hf_fig 是一个图形窗口的句柄,Ha_ax1 是坐标轴对象的句柄,而Ht_title是一个文本对象的句柄。当对象类型不知道时,用字母x,比如Hx_obj。虽然
句柄变量可以取任意名字,遵循这种规则使得能在M 文件中很容易找到句柄变量。
所有产生对象的MATLAB 函数都为所建立的每个对象返回一个句柄(或句柄的列向量)。这些函数包括plot,mesh,surf 及其它。有一些图形由一个以
上对象组成。比如,一个网格图由一个曲面组成,它只有一个句柄;而waterfall图形由许多线条对象组成,每个线条对象都有各自的句柄。
例如,? Hl_wfall=waterfall(peaks(20)) 对线条返回一个包含着2 得了一个对象的句柄,它的对象类型可以通过查询对象的 'Type' 属性来获得。该属性是
一个字符串对象名,比如 'figure' ,'axes' 或 'text' 。例如:
x_type=get(Hx_obj, 'Type' )
MATLAB 中的函数gcf,gca 和gco 是很好的例子,它们说明如何利用句柄图形来获得有关对象的信息。函数gcf 获得根对象的 'CurrentFigure' 的属性
值,即是当前图形的句柄。gcf M 文件包含:
function h=gcf()
% GCF Get current figure handle.
% H=GCF returns the handle to the current figure.The current fugure is the figure(graphics window)that graphics commands like PLOT,TITLE,SURF,etc.draw to if issued.
%
% Use the commands FIGURE to change the current figure to a diffent figure,or to create new % ones.
%
% See also FIGURE,CLOSE,CLF,GCA.
% Copyright (c) 1984-94 by The MathWorks,Inc.
h=get(0, 'CurrentFigure' );
<br>类似的,函数gca 返回当前图形的 'CurrentAxes' 属性值,它的M 文件描
述如下。
<br>function h=gca()
% GCA Get current axis handle.
% H=GCA returns the handle to the current axis.The current axis is the axis that graphics % command like PLOT,TITLE,SURF,etc.draw to if issued.
%
% Use the commands AXES or SUBPLOT to change the current axis to a different axis,or to % create new ones.
% see also AXES,SUBPLOT,DELETE,CLA,HOLD,GCF.
% Copyright (c) 1984-94 by The MathWorks,Inc.h=get(get(0, 'CurrentFigure' ), 'CurrentAxes' );
<br>函数gco 也相同,只是它在试图获得当前对象之前先检查图形是否存在。注意函数gcf 和gca 能促使建立相关的对象,如果它们不存在的话。如下所示的函数gco,它先检查子对象( 'Children' )是否存在,如果不存在,就不创建图形对象。
<br>function object=gco(figure)
<br>%GCO Handle of current object.
% OBJECT=GCO returns the current object in the current figure.
%
% OBJECT=GCO(FIGURE) returns the current object in figure FIGURE.
%
% The current object for a given figure is the last object clicked on with mouse.
%Copyright (c) 1984-94 by The MathWorks,Inc.
<br>if isempty(get(0, 'Children' ))
object=[ ];
return;
end;
if (nargin==0)
figure=get(0, 'CurrentFigure' );
end
object=get(figure, 'CurrentObject' );当需要一些除了 'CurrentFigure' 、 'CurrentAxes' 和 'CurrentObject' 之外的某些东西时,可以用函数get 来获得一个对象的子对象的句柄向量。例如:Hx_kids=get(gcf, 'Children' )返回一个向量,它包含当前图形子对象的句柄。
可以用获得子对象 'Children' 句柄的技术彻底搜索句柄图形的层次结构中来找到所要的对象。例如,在画出一些数据后,寻找绿色线条句柄的问题。x=-pi:pi/20:pi; % create some data
y=sin(x);
z=cos(x);
plot(x,y, 'r' ,x,z, 'g' ); % plot two lines in red and green
Hl_lines=get(gca, 'Children' ); % get the line handles
for k=1:size(Hl_lines) % find the green line
if get(Hl_lines(k), 'Color' )==[0 1 0]
Hl_green=Hl_lines(k)
end
end
Hl_green=
58.0001
Matlab_GUI gcf、gca 以及gco 的区别用法相关推荐
- flash中Stage,stage,root和this的区别用法
转载自:http://aresleecool.blog.163.com/blog/static/120715798201011895334718/ http://cctv566888.blog.163 ...
- php strpose_php中strpos()和stripos()函数的区别用法详解
本篇文章主要给大家介绍PHP中strpos()和stripos()函数的区别用法介绍,希望对需要的朋友有所帮助! strpos()函数 这个函数帮助我们找到一个字符串在另一个字符串中第一次出现的位置. ...
- MATLAB常用函数-gcf / gca / gco
MATLAB R2019a gcf: 返回当前图像对象的句柄值 语法: h = gcf % 返回当前图像的句柄,如果没有图像,则会自动创建一个,然后返回其句柄 gca: 返回当前坐标轴对象的句柄值 ...
- Java容器集合类的区别用法
Set,List,Map,Vector,ArrayList的区别 JAVA的容器---List,Map,Set Collection ├List │├LinkedList │├ArrayLis ...
- 页面静态化2 --- 使用PHP缓存机制来完成页面静态化(上)(ob_flush和flush函数区别用法)...
我们可以使用PHP自带的缓存机制来完成页面静态化,但在这里,需要说明一点,仅靠PHP缓存机制并不能完美的解决页面静态化,往往需要和其他页面静态技术(通常是伪静态技术)结合使用 例子: 当访问一个页面时 ...
- might和could的区别用法_might 与 could区别,谢谢,may和might的区别及用法
may和might的区别及用法:1.表示许可.在表示请求.允许时,might比may语气委婉些.注意:否定回答可用can't或mustn't,表示:不可以.阻止.May I come in? Yes, ...
- 和could的区别用法_have to 与 must 用法及区别
本文可以从"公众号菜单->英语知识-英语辨析->英语易混词或词组用法区别"找到. 相对于 can,could,may,might 和 must 等情态动词而言,need ...
- 和could的区别用法_高考英语语法情态动词用法指南
高考英语语法情态动词用法指南 情态动词有四类: ①只做情态动词:must,can(could),may(might)-- ②可做情态动词又可做实义动词:need,dare,will ③具有情态动词特征 ...
- might和could的区别用法_can,could,may might,must,ought 的区别和用法
can,could,may might,must,ought 的区别和用法 关注:294 答案:2 mip版 解决时间 2021-01-12 21:18 提问者話仳情亼鎂 2021-01-11 2 ...
最新文章
- python字符串基本形式_python字符串常用方式
- 查询表空间状态,创建表空间,让表空间的大小自动扩展,删除表空间
- eclipse run on server 点不了finish_分享点经验 | springboot入门及编码
- 两条边延长角会有什么变化_《认识角》教学设计
- 一年成为ai算法工程师_我作为一名数据科学研究员所学到的东西在一年内成为了AI领导者...
- 考上985的研究生了!
- PS|如何将Adobe Photoshop(PS)完全卸载
- 中国最美的100首古代情诗
- DevOps自动化测试的原则和实践
- 呼叫中心系统对接开发-网关和中继的对接
- 卡饭PDF转换器之CAJ转换
- 2020年是意义非凡的一年,大专的我面试阿里P6居然过了,activity事件分发
- 什么是MT4?(2022MT4简介)
- 【洛谷】3960:列队【Splay】
- 大环配体DOTA修饰Fe3O4磁性纳米颗粒定制-瑞禧小编
- 【问题解决】PPT错误,应用程序无法正常启动(0xc0000022)
- UE4 项目工程规范
- 技术分享 | 如何发现企业云网络中的安全隐患
- 树莓派打开两个SPI口
- Java之HashMap经典算法-红黑树(插入节点平衡调整,左旋转,右旋转)