have a figure slide under another
    9 ビュー (過去 30 日間)
  
       古いコメントを表示
    
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
 figure2('Visible','off') 
 figure(figure1)
 for i = 1:65.2
    set(figure2,'Position',[103.2+i 34.0769+10 62.8 15.6923])
 end
0 件のコメント
採用された回答
  Sean de Wolski
      
      
 2013 年 6 月 24 日
        
      編集済み: Sean de Wolski
      
      
 2013 年 6 月 25 日
  
      I don't really understand why you would want to do this, but here you go:
Updated
function moveFigureElegantly
hFig1 = figure;
set(hFig1,'units','normalized');
plot(1:10);
hFig2 = figure;
surf(peaks);
%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}
          'TasksToExecute',200,...          
          'StartDelay',0,...
          'TimerFcn',@moveFig,...
          'StartFcn',[],...
          'StopFcn',[],...
          'ErrorFcn',[]);
start(T);
      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;
          end                       
      end
  end
2 件のコメント
  Sean de Wolski
      
      
 2013 年 6 月 25 日
				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.
その他の回答 (2 件)
  Evan
      
 2013 年 6 月 24 日
        
      編集済み: Evan
      
 2013 年 6 月 24 日
  
      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.
6 件のコメント
  Evan
      
 2013 年 6 月 24 日
				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.
参考
カテゴリ
				Help Center および File Exchange で Creating, Deleting, and Querying Graphics Objects についてさらに検索
			
	製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!