dayon的个人博客分享 http://blog.sciencenet.cn/u/dayon

博文

关于Matlab 的图形句柄笔记(仅供参考自学)

已有 2317 次阅读 2020-1-5 11:58 |个人分类:科研笔记|系统分类:科研笔记| 图形句柄, MATLAB

关于Matlab 的图形句柄

 

什么是句柄图形?

句柄图形是对底层图形例程集合的总称,它实际上进行生成图形的工作。这些细节通常隐藏在图形M 文件的内部,但如果想使用他们,也是可以得到的。

 Matlab 用户指南给人的一种印象是,句柄图形非常复杂,只对熟练的高级用户才有用。而实际上不是这样的。句柄图形可以被任何人用来改变Matlab生成图形的方式,不论是想改动一点点,还是想整个全局变化。

句柄的存在可以让用户定制图形的许多特性,而这些高级命令是普通函数无法实现的。比如: plot去画一个橘黄色的线,因为如果橘黄色是plot不包括的颜色,则plot函数则无法使用,而这可以通过句柄来实现。

 

句柄图形是基于这样的概念,即一幅图的每一组成部分是一个对象,每一个对象有一系列句柄和它相关,每一个对象有按需要可以改变的属性。

当今计算机行业最流行的术语之一便是对象这个词。面向对象的编程语言,数据库对象,操作系统和应用程序接口都使用了对象的概念。一个对象可以被粗略地定义 为由一组紧密相关、形成唯一整体的数据结构或函数集合。

MATLAB中,图形对象是一幅图中很独特的成分,它可以被单独地操作。由图形命令产生的每一件 东西都是图形对象。它们包括图形窗口或仅仅说是图形,还有坐标轴、线条、曲面、文本和其它。这些对象按父对象和子对象组成层次结构。

 

计算机屏幕是根对象,并且是所有其它对象的父亲。

图形窗口是根对象的子对象;

坐标轴和用户界面对象是图形窗口的子对象;

线条、文本、曲面、补片和图象对象是坐标轴对象的子对象。

 

根可包含一个或多个图形窗口,每一个图形窗口可包含一组或多组坐标轴。所有其它的对象(除uicontrol uimenu 外)都是坐标轴的子对象,并且在这些坐标轴上显示。所有创建对象的函数当父对象或对象不存在时,都会创建它们。

例如,如果没有图形窗 口,plot(rand(size([110])))函数会用缺省属性创建一个新的图形窗口和一组坐标轴,然后在这组坐标轴内画线。


 

什么是句柄图形对象?

假设已打开了三个图形窗口,其中两个有两幅子图。并要改变其中一幅子图坐标轴内一条线的颜色,如何认定想要改变的那条线?在MATLAB 中,每一个对象都有一个数字来标识,叫做句柄。

每次创建一个对象时,就为它建立一个唯一的句柄。计算机屏幕作为根对象常常是0Hf_fig=figure 命令建立一个新的图形窗口,变量Hf_fig 中返回它的句柄值。图形窗口的句柄为整数,通常显示在图形窗口标题条中。其它对象句柄是MATLAB 满精度的浮点值。


MATLAB可以用来获得图形、坐标轴和其它对象的句柄。例如,Hf_fig=gcf返回当前图形窗口的句柄值,而 Ha_ax=gca 返回当前图形窗口内当前坐标轴的句柄值。

为了提高可读性,在命名包含句柄对象的变量取名可用大写的H 开头,跟之以一个辨识对象类型的字母,然后是一个下划线,最后是一个或几个描述符。

因此,Hf_fig 是一个图形窗口的句柄,Ha_ax1 是坐标轴对象的句柄,而Ht_title是一个文本对象的句柄。当对象类型不知道时,用字母x,比如Hx_obj。虽然句柄变量可以取任意名字,遵循这种规则使得能在M 文件中很容易找到句柄变量。

 

所有产生对象的MATLAB 函数都为所建立的每个对象返回一个句柄(或句柄的列向量)。这些函数包括plotmeshsurf 及其它。有一些图形由一个以

上对象组成。比如,一个网格图由一个曲面组成,它只有一个句柄;而waterfall图形由许多线条对象组成,每个线条对象都有各自的句柄。

例如,Hl_wfall=waterfall(peaks(20)) 对线条返回一个包含着2 得了一个对象的句柄,它的对象类型可以通过查询对象的 'Type' 属性来获得。该属性是一个字符串对象名,比如 'figure' 'axes' 'text'

x_type=get(Hx_obj, 'Type' )

 

此外

图形对象具有各种属性,有些属性是所有对象共同兼有的,有些则是特有的。

对象常用的公共属性有:

Children属性:该属性的取值是该对象所有子对象的句柄组成的一个向量;

Parent属性:该属性的取值是该对象的父对象的句柄;

Type属性:表示该对象的类型。不可改变;

Visible属性:该属性的取值是on(default),或off, 当为off时,可以用来隐藏该图形窗口的动态变化过程,如窗口大小的变化,颜色的变化等。

set(gcf,’visible’,’off’)


参考和摘抄【感谢】:

https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4306865.html


      MATLAB第9章图形句柄.pdf




https://blog.sciencenet.cn/blog-3425629-1212957.html

上一篇:GIS用polyline分割polygon: 无法创建要素,地图不包含面目标。错误!
下一篇:axes随手记
收藏 IP: 218.19.145.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-26 08:58

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部