have a figure slide under another

1 view (last 30 days)
Hi, I would like to have figure2 slide from behind figure 1 when I push a button. Unfortunately I was able to accoplish all that with exception of the sliding from behind. Each time I set the posiion it bring figure 2 to front and stays there. I know I can push figure 2 back behind figure 1 once I set the position however it does not look good or natural. Any ideas how to keep figure 2 behind the whole time? Thank you
figure 1
for i = 1:65.2
set(figure2,'Position',[103.2+i 34.0769+10 62.8 15.6923])

Accepted Answer

Sean de Wolski
Sean de Wolski on 24 Jun 2013
Edited: Sean de Wolski on 25 Jun 2013
I don't really understand why you would want to do this, but here you go:
function moveFigureElegantly
hFig1 = figure;
hFig2 = figure;
%Where do we want to go
trajectory = [sin(linspace(0,2*pi,100)).', cos(linspace(0,2*pi,100)).']./2+0.25;
ii = 0; %Where are we
% NOTE keeping width and height fixed, they could be changed as well
T = timer('Period',0.5,... %period
'ExecutionMode','fixedRate',... %{singleShot,fixedRate,fixedSpacing,fixedDelay}
'BusyMode','drop',... %{drop, error, queue}
function moveFig(~,~)
% increment location
ii = ii+1;
%Move the figure
set(hFig1,'position',[trajectory(ii,:), 0.5 0.5])
% reset after looping through
if ii == size(trajectory,1)
ii = 0;
Sean de Wolski
Sean de Wolski on 25 Jun 2013
See the edits. Now it follows a trajectory. There are a few different ways you can do this; personally I like nested functions for this application.

Sign in to comment.

More Answers (2)

Evan on 24 Jun 2013
Edited: Evan on 24 Jun 2013
Does this work?
% Example
f = figure; % create first figure
g = figure; % create second figure (appears in front of first)
figure(f) % bring first figure to front
I tried out your example, and calling the figure that should be "in front" like I did above inside the loop seemed to do the trick.
Evan on 24 Jun 2013
Hmm, interesting. My way is certainly crude, though I don't experience any noticeable flicker due to the "bring to front." Perhaps Sean's solution will work for you.

Sign in to comment.

Vincent I
Vincent I on 24 Jun 2013
solved it by doing the following:
for i=1:63
the initial problem was that instead of setting the handle I was setting the position of the figure itself. Works now
Thank you for your help


Find more on Interactive Control and Callbacks in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!