Borrar filtros
Borrar filtros

Retrieve Imline handle from axes

1 visualización (últimos 30 días)
Matt_Z
Matt_Z el 30 de Jun. de 2016
Comentada: Matt_Z el 30 de Jun. de 2016
Hi,
having trouble retrieving handle to Imline objects created within an axes. It is running in a multi-step GUI and I am trying to update the Imline position when a user inputs a selection of x and y values.
Issue can be reproduced using below:
fh = figure;
ah = axes(fh);
imshow('pout.tif');
h = imline(ah,[10 100], [100 100]);
clear all % you must put this in as I’m running from the gui
H=get(gca,'Children')
H =
2x1 graphics array:
Group (imline)
Image
setPosition(H(1),[50 200], [140 200])
ERROR: Undefined function 'setPosition' for input arguments of type 'matlab.graphics.primitive.Group'.
Any help would be most appreciated

Respuesta aceptada

Walter Roberson
Walter Roberson el 30 de Jun. de 2016
I confirm that in R2016a. I do not know why it happens. The workaround is
setPosition(H(1).ApplicationData.roiObjectReference,[50 200],[140 200])
  1 comentario
Matt_Z
Matt_Z el 30 de Jun. de 2016
Thanks Walter... works a treat!

Iniciar sesión para comentar.

Más respuestas (1)

Geoff Hayes
Geoff Hayes el 30 de Jun. de 2016
Matt - which version of MATLAB are you using? If you are using an older version of MATLAB, you may not have the ability to call the setPosition method and instead will have to update the position property. What properties are returned when you execute the following
get(H(1))
Is there a Position such that you could do
set(H(1), 'Position', 50 200], [140 200]);
Also, why do you "lose" the handle h after you initially create this object? Why the clear all statement?
  1 comentario
Matt_Z
Matt_Z el 30 de Jun. de 2016
Hi Geoff and thanks for getting back to me.
the reason the handle is lost is it is embedded into a callback routine of a GUI. I have tried to save the handle to the figure using setappdata but this returns the same handle structure as H=get(gca,'Children')
To answer your question I am using R2016a and get(H(1)) returns:
Annotation: [1x1 matlab.graphics.eventdata.Annotation]
BeingDeleted: 'off'
BusyAction: 'queue'
ButtonDownFcn: ''
Children: [4x1 Line]
CreateFcn: ''
DeleteFcn: @imlineAPI/deleteContextMenu
DisplayName: ''
HandleVisibility: 'on'
HitTest: 'on'
Interruptible: 'on'
Parent: [1x1 Axes]
PickableParts: 'visible'
Selected: 'off'
SelectionHighlight: 'on'
Tag: 'imline'
Type: 'hggroup'
UIContextMenu: [0x0 GraphicsPlaceholder]
UserData: []
Visible: 'on'
Unfortunately set(H(1), 'Position', [50 200], [140 200]) does not work and provides the following:
Error using matlab.graphics.primitive.Group/set Invalid parameter/value pair arguments.

Iniciar sesión para comentar.

Categorías

Más información sobre Interactive Control and Callbacks en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by