Keep zoom in when displaying an image and zoom out after

9 visualizaciones (últimos 30 días)
Mathieu
Mathieu el 20 de Jul. de 2015
Comentada: Mathieu el 21 de Jul. de 2015
Hello,
I am working on an interface using Guide on Matlab R2015a. What I would like is to be able to zoom in an image ploted on a figure of my gui, and then keeping my xlim and ylim when I display this image. I found how to do this getting the xlim and ylim of the figure juste before the display. What I have to do is set these limits to the new figure like this:
xlim = get(axes.handles, 'XLim');
display_image;
set(axes.handles, 'XLim', xlim);
But if I want to zoom out after, I can't because my axes are now the last ones (that I setted manually). Did I miss something to be able to zoom out after a zoom in and a display? I think it is just a little thing to know but I don't find.
Thank you in advance for your help.

Respuesta aceptada

Walter Roberson
Walter Roberson el 20 de Jul. de 2015
displaying an image does not inherently change the active axes, but it could be that your display_image() code is written in such a way that it changes the active axes.
Do not write your code like
axes(handles.axes2)
image(TheImageArray);
instead write
image(TheImageArray, 'Parent', handles.axes2);
This does not change the active axes.
  3 comentarios
Walter Roberson
Walter Roberson el 20 de Jul. de 2015
Not the parent image, the parent axes. If you want it in a different figure and the only thing in that figure then you use
fig2 = figure(2); %or use appropriate number
ax2 = axes('Parent',fig2);
image(TheImageArray, 'Parent', ax2);
If zoom reset works for you then go ahead and use it this time. But in the long run when you develop more complex GUI you will find that relying on active figures or active axis doesn't work very well. If you rely on active axes or active figures then you cannot "just add a little plot to the code" without risking breaking your existing graphics structure. You will also find that there are a lot of different ways that a figure or axes can accidentally become active. Like debugging -- and if you aren't writing your program with the expectation that you will need to debug it, then you are not writing good code.
Mathieu
Mathieu el 21 de Jul. de 2015
Ok I thank you for your answer. I will try to use your method.
Best regards.

Iniciar sesión para comentar.

Más respuestas (1)

Image Analyst
Image Analyst el 20 de Jul. de 2015
Zooming an image is tricky. See the attached demo which I got from the Mathworks on how to use a "imscrollpanel".
  1 comentario
Mathieu
Mathieu el 20 de Jul. de 2015
I have not the toolbox with this function. It is why I am looking for another solution. What I didn't say is that my image is composed with vectors of data (like if I was watching these vectors by top). I keep in mind your function if one day I have the adequate toolbox.

Iniciar sesión para comentar.

Categorías

Más información sobre Data Exploration en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by