找回密码
 注册
Simdroid-非首页
查看: 550|回复: 15

【讨论】关于Object句柄的获取

[复制链接]
发表于 2003-6-11 08:35:35 | 显示全部楼层 |阅读模式 来自 山东青岛
通过 findobj 可以根据Object的属性来获取其句柄来进行其它操作,但对于手工加入的Object,如:用鼠标绘制的直线,或加入的文字框(用text或gtext加入的可以)好象不行,请问如何获取这些对象的句柄。谢了。
 楼主| 发表于 2003-6-13 08:15:12 | 显示全部楼层 来自 山东青岛

回复: 【讨论】关于Object句柄的获取

Simdroid开发平台
没有人知道吗?
发表于 2003-6-13 09:25:09 | 显示全部楼层 来自 台湾

回复: 【讨论】关于Object句柄的获取

您好
可以吧
  
不一定每一個物件都要使用findobj去抓handle
因為當您建完一個物件
matlab會自動建立出相對應的handle
簡單來說
您可以使用
>>g=gtext('test!!!')
set(g)
BackgroundColor
  Color
  EdgeColor
  EraseMode: [ {normal} | background | xor | none ]
  Editing: [ on | off ]
  FontAngle: [ {normal} | italic | oblique ]
  FontName
  FontSize
  FontUnits: [ inches | centimeters | normalized | {points} | pixels ]
  FontWeight: [ light | {normal} | demi | bold ]
  HorizontalAlignment: [ {left} | center | right ]
  LineStyle: [ {-} | -- | : | -. | none ]
  LineWidth
  Margin
  Position
  Rotation
  String
  Units: [ inches | centimeters | normalized | points | pixels | characters | {data} ]
  Interpreter: [ {tex} | none ]
  VerticalAlignment: [ top | cap | {middle} | baseline | bottom ]
  
  ButtonDownFcn: string -or- function handle -or- cell array
  Children
  Clipping: [ {on} | off ]
  CreateFcn: string -or- function handle -or- cell array
  DeleteFcn: string -or- function handle -or- cell array
  BusyAction: [ {queue} | cancel ]
  HandleVisibility: [ {on} | callback | off ]
  HitTest: [ {on} | off ]
  Interruptible: [ {on} | off ]
  Parent
  Selected: [ on | off ]
  SelectionHighlight: [ {on} | off ]
  Tag
  UIContextMenu
  UserData
  Visible: [ {on} | off ]
  
就可以設定相關屬性了
  
您試試

[ 本帖最后由 bainhome 于 2006-11-5 02:26 编辑 ]
 楼主| 发表于 2003-6-18 08:35:45 | 显示全部楼层 来自 山东青岛

回复: 【讨论】关于Object句柄的获取

谢了,不过我的Object是用鼠标加上去的,这样可以获取吗?
发表于 2003-6-18 20:01:53 | 显示全部楼层 来自 Invalid

回复: 【讨论】关于Object句柄的获取

您好
  
Object是用鼠标加上去的??
  
可否麻煩您說祥細一點
或將您的程式貼出來
一起討論
  
謝謝
 楼主| 发表于 2003-6-25 20:39:05 | 显示全部楼层 来自 山东青岛

回复: 【讨论】关于Object句柄的获取

打开一个figure窗口,用鼠标点击工具栏的Insert Line按钮,划一条线,如何获取该线的handle?
发表于 2003-6-25 21:36:11 | 显示全部楼层 来自 新加坡

回复: 【讨论】关于Object句柄的获取

有几个办法。关键在于使用findall,而不是findobj。
  
如果你只有一条线。也就是在matlab里用figure命令,然后用figure窗口工具栏的Insert line画一条线,那么可以这样获得所画线条的句柄:
  1. hLine = findall(gcf, 'Type', 'Line');
复制代码

  
如果你已经在该figure里画了一些曲线,比如:
  1. x = 0:.01:20;
  2. y = x.*sin(x);
  3. hPlot = plot(x, y);
复制代码

然后在用Insert line画一条线,那么这时用hLines = findall(gcf, 'Type', 'Line')获得的就是这两条线。那么怎么去区分这两条线呢?有好几种办法:
  
1. 一般用工具栏手工加上去的线条的句柄的数值比用plot德句柄值大,也就是说上面hLines里比较大的那个数值就是对应于手工添加对象的句柄。但是可能不保险。
  
2。通常用手工添加的线条的数据点只有两个,即起始点和终止点,而用plot等所画的线条其数据点数目比较多,所以可以通过判断数据点个数来找出手工钱家对象。
  1. numOfPts = length(get(hLines(i), 'Xdata')); % 用循环遍历所有句柄
复制代码

3. 既然是手工添加,当然应该明白所添加线条的位置,所以可以通过判断该线条的起始点和终止点的坐标值来判断,这种方法适合于手工添加两条以上的线条。
  1. lineDataX = get(hLines(i), 'XData'); %用循环遍历所有句柄
复制代码

4。最佳方法就是:既然是手工添加,那么在添加线条以后,顺手用鼠标双击该线条,在出来的Property窗口,Info标签下面,给这个线条一个Tag,那么在程序里就可以通过这个tag来唯一的确定该对象:
  1. hMyLine = findall(gcf, 'Tag', 'myLine');
复制代码

  
仅供参考。欢迎讨论。
  
:I

评分

1

查看全部评分

发表于 2003-6-26 15:03:44 | 显示全部楼层 来自 同济大学

回复: 【讨论】关于Object句柄的获取

强的!
 楼主| 发表于 2003-6-28 18:10:48 | 显示全部楼层 来自 山东青岛

回复: 【讨论】关于Object句柄的获取

taohe,真强啊!谢谢了,非常感谢!
发表于 2006-11-5 19:49:56 | 显示全部楼层 来自 江苏南京
x = 0:.01:20;
y = x.*sin(x);
hPlot = plot(x, y);

如果我想在一个生成的图象中画一条平行于y轴的直线,但是不知道图象中y轴的范围,请问怎么提取,谢谢!!
发表于 2006-11-5 21:45:00 | 显示全部楼层 来自 新疆乌鲁木齐
?axes
?get(gca,'ylim')
ans =
     0     1
发表于 2006-11-6 12:14:25 | 显示全部楼层 来自 江苏南京
好,多谢谢!!
这么多技巧从哪里来啊?
为什么bainhome大师能回答所有人的问题?深不见底啊!!
发表于 2006-11-6 13:10:00 | 显示全部楼层 来自 北京海淀
致inndoor,我想下面这句话回答你的问题再合适不过了。
不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。
MATLAB太博大精深了,我认为任何人,包括Cleve B.Moler博士都不能做到对MATLAB 100%精通掌握,MATLAB简单在于其语法,其更加人性化的编程方式。MATLAB的复杂,在于它融汇了N个学科的专业知识,汇聚了N多精辟算法,真可谓吸收日月精华。把MATLAB比作武林秘籍我觉得挺适合的,里面的玄机不是一朝一夕能够参透的,你刻苦修炼的越多,发现的玄机越多,你的功力也就越大!
你可以在比较著名的论坛上搜索一下注册几年以上的大牛的帖子。从最开始读,幸运的话你能看到一个大牛是如何从初入江湖成长为武林高手的。
很多技巧是需要长时间的积累的。这需要你去不断实践,不断读大牛们的代码。记住,任何大牛都是从0开始的。建议去读读cwit的"我与MATLAB这三年"这篇帖子,相信收获会颇多的。

[ 本帖最后由 rocwoods 于 2006-11-6 13:20 编辑 ]
发表于 2006-11-6 18:01:40 | 显示全部楼层 来自 湖北武汉
^_^
精华区和这里一些有价值的帖子我都看完了
感觉还应该有一些帖子
是不是可能旧版论坛的原因了
发表于 2006-11-6 18:35:41 | 显示全部楼层 来自 新疆乌鲁木齐
本来不想回应这种帖子,但是“大师”两个字有点儿吓人,必须制止...
to inndoor:我只是把MATLAB作为爱好而已,为高手服务应运而生的产物,真正的高手是我称之为03黄金一代的这批早期高手,名字就不提了,你天天能见到这批人的精华贴。即使这批人加起来也不可能回答所有人的问题,都是精专一点而出成果。
to shunfly:看完和看懂应该是两回事儿,如果说看完,05年初我就看完了。如果说看懂,我争取在40岁之前看懂一半儿...^_^
to rocwoods:言重了,MATLAB其实对大多数人的作用是在学校产生的,真正用这个软件创造效益,国内的各项产业至少落后二十年,如果数值计算软件在国内各行各业生根发芽和定量化分析成风,相信我们这批人都已经盛年已过,所以我们还都是做基础和探索工作的,玩玩儿而已,离高手和大师的称号不知道还有多少距离,在看恒润的一些国外东西介绍时这种感受尤其强烈。

[ 本帖最后由 bainhome 于 2006-11-6 18:44 编辑 ]
发表于 2006-11-7 10:22:59 | 显示全部楼层 来自 北京海淀
呵呵,bainhome老兄为人做事风格令我十分钦佩!相信simwe有你这样热心的版主一定会越来越好的!
我也特希望几大论坛能够一起整合资源,共同推进数值计算软件在“国内各行各业生根发芽和定量化分析的过程”。现在国内企业这方面真的是太落后了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-13 00:42 , Processed in 0.052590 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表