Keep zoom in when displaying an image and zoom out after

조회 수: 9 (최근 30일)
Mathieu
Mathieu 2015년 7월 20일
댓글: Mathieu 2015년 7월 21일
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.

채택된 답변

Walter Roberson
Walter Roberson 2015년 7월 20일
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
Walter Roberson
Walter Roberson 2015년 7월 20일
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 2015년 7월 21일
Ok I thank you for your answer. I will try to use your method.
Best regards.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Image Analyst
Image Analyst 2015년 7월 20일
Zooming an image is tricky. See the attached demo which I got from the Mathworks on how to use a "imscrollpanel".
  댓글 수: 1
Mathieu
Mathieu 2015년 7월 20일
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.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Data Exploration에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by