用鼠标选择对象-大学物理知识点总结
9.7用鼠标选择对象第九章图形句柄第261页
-
gcf返回当前图象的句柄
-
gca返回当前图象中当前坐标系的句柄
-
gco返回当前对象的句柄
-
findobj寻找指定属性值的图形对象函数
gcf返回当前图象的句柄。如果这个图象不存在,gcf将会创建一个,并返回它的句柄。函数gca返回当前图象中当前坐标系的句柄,如果图象不存在,或当前图象中无坐标系,那么函数gca将创建一个坐标系,并返回它的句柄。函数gco的形式如下
H_obj = gco;
H_obj = gco(H_fig);
H_obj是一个对象的句柄,H_fig是一个图象的句柄。这个函数的第一种形式返回当前图象中的当前对象的句柄。它的第二种形式返回一指定图象中的当前对象的句柄。当前对象是指用鼠标单击的最一个对象。这个对象可以是除了根对象的任意图形对象。直到鼠标在图象内发生了单击事件,在图象内才有一个当前对象。在单击事件发生之后,函数gco将返回一个空数组[],不像函数gcf和gca,gco如果不存在就自动创建。一旦我们得知了一个对象的句柄,我们可以通过检测"Type"属性来确定对象的类型。"Type"属性是一个字符串,例如"figure","line","text"等等。
H_obj = gco;
type = get(H_obj, 'Type')
查找任意一个MATLAB对象最简单的方法是用findobj函数。它的基本形式如下
Hndls = findobj('PropertyName1',value1, ...)
这个命令起始于根对象,并搜索所有的对象,找出含有指定属性,指定值的对象。注意可以指定多个属性/值,findobj只返回与之匹配的对象句柄。假设我们已经创建了对象figure1和figure3。那么函数findobj('Type','figure')将会返回结果
H_fig = findobj('Type', 'figure')
H_fig = 3 1
函数findobj的这种形式非常的有用,但却比较慢,因为它必须对整个对象树进行搜索。如果你必须多次用到一对象,只调用一次函数findobj,为了重复利用句柄,句柄应存储下来。限定搜索对象的数目能够加快函数运行的速度。它的形式为
Hndls = findobj(SrchHndls, 'PropertyName1', value1, ...)
在这里,只有数组srchHndls和它的子数组中的句柄,才在搜索的范围内。例如你想找到图1中的虚线。它的命令为
Hndls = findobj(1, 'Type', 'line', 'LineStyle', '--');
好的编程习惯如果有可能的话,限定函数findobj的搜索范围将能加快函数的运行速度。
9.7用鼠标选择对象函数gco将返回当前对象,当前对象是指用鼠标最后一次单击的对象。每一个对象都有一个与之相关的可选择区,在可选择区内任意一个单击都可以看作对这个对象的单击。对于细小的对象(例如线,点)来说,这种特性是非常重要的。可选择区的宽度和形状由对象的类型确定。一个曲线的可选择区在离直线5pixel的范围内,而一个表面,一个小块和文本对象的可选择区是包含这些对象的最小长方形。对于一个坐标系对象来说,它的可选择区是坐标轴区域加上标题和标签的区域。但是在坐标轴内的曲线对象或其他对象有更高的优先权,你必须在单击坐标内的一点,并且不靠近
更详细的MATLAB图形对象句柄信息,可以访问MATLAB图形对象句柄详解,或者学习更多编程技巧,请看MATLAB句柄编程技巧详解。如果想获取所有图形对象的句柄,参考matlab开发获取所有图形对象的句柄也是个不错的选择。
这样一来,无论你是初学者还是进阶用户,都能轻松掌握MATLAB图形对象的句柄操作了!