How do you get an impoly class object from its handle?

3 ビュー (過去 30 日間)
Andrew Diamond
Andrew Diamond 2012 年 6 月 5 日
コメント済み: Image Analyst 2015 年 5 月 31 日
I created impoly objects with impoly. Their tag is impoly. At some later point I want to get all the properties of all the created impolys. I can use findall on a Tag of impoly but that apparently just returns the handles as opposed to the class objects. I know this because when I try calling the impoly methods (e.g. getColor) on a returned handle it barfs because the handle, which is a double, isn't an impoly class object. Calling impoly on the class does not cast it.
I could store the objects when they are created to work on them later but they user might delete them etc. In any even it seems silly to do that.
=
specifics: On my gui a botton links to a callback which calls impoly. impoly returns an impoly object that the impoly members can operate. Eg h=impoly(axeshandle) setColor(h,'red');
When the user clicks my "Save" button, another callback is called and in that I use a H=findall(axeshandle, 'Tag', 'impoly') to find and return all the polygons. However, H is all double type graphics handles and so a call like GetColor(H(1)) will fail with the error :
Conversion to double from cell is not possible.

回答 (2 件)

Andrew Diamond
Andrew Diamond 2012 年 6 月 5 日
Apparently the function aptgetapi gives access to the methods.
Given h, a returned simple handle (by findobj or findall)
api=iptgetapi(h)
PtsList = api.getPosition();
yields a nx2 list of polygon points. I'm sure the other methods work accordingly.
I simply can't believe what it took to find this out. Searching support didn't seem to yield anything. You'd think I was the first person to do it or it was plainly obvious. I find either hard to believe.
It's like original sin.
  3 件のコメント
Slim
Slim 2015 年 5 月 31 日
Works great ! Thanks a lot !
Image Analyst
Image Analyst 2015 年 5 月 31 日
"I simply can't believe what it took to find this out." - probably because hardly anyone ever does that, and if they did, they'd just save the poly objects in a cell array if they knew they'd need them later.

サインインしてコメントする。


Walter Roberson
Walter Roberson 2012 年 6 月 5 日
imh = handle(h);
imh.setColor('red');
  1 件のコメント
Andrew Diamond
Andrew Diamond 2012 年 6 月 5 日
This doesn't seem to work as the handle(h) returns an object of class hggroup vs impoly.( and impoly, not hggroup, has the setColor etc methods)

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeConstruct and Work with Object Arrays についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by