2012-03-10 27 views
2

Setting graph figure sizematlab、デフォルトのFigureサイズを設定しますが、位置は気にしませんか?同様に

しかし、私はちょうどの位置を気にすることなく、幅と高さを設定したいです。希望の振る舞いは、自由に図をドラッグすることができるということですが、再描画するたびにサイズが固定されます。

上記のリンクのメソッドが好きではありません。コードの開発に迷惑をかけているか、別のコンピュータを使用していると、その位置に(x、y)座標を指定する必要があります。しかし、おそらくそのスマートな方法set()関数を使用していますか?

EDIT:以下のクールアンサーは、ここに私の更新された機能です。もう一つのことは「静か」なので、人物は常に焦点を当てません。

function h = sfigure(h,s1,s2) 
% SFIGURE Create figure window (minus annoying focus-theft). 
% 
% Usage is identical to figure. 
% 
% Daniel Eaton, 2005 
% 
% See also figure 
% 
% Modified by Peter Karasev, 2012, to optionally set scale 
% 

if nargin>=1 
    if ishandle(h) 
     set(0, 'CurrentFigure', h); 
    else 
     h = figure(h); 
    end 
else 
    h = figure; 
end 

if(nargin > 1) 
    scaleX = s1; 
    scaleY = s1; 
    if(nargin > 2) 
    scaleY = s2; 
    end 
    pos = get(h,'Position'); 
    pos(3:4) = [400 300].*[scaleX scaleY]; 
    set(gcf,'Position',pos); 
end 

答えて

2

対応get機能とそれを組み合わせる:

figure 
pos = get(gcf,'Position'); 
pos(3:4) = [w h]; 
set(gcf,'Position',pos); 

このデフォルトの位置を保つだけの幅と高さを変更します。

+0

私の質問を編集して、このトリックをsfigure()関数にラップしました。 –

+0

@peterkarasev vararginリストを 'figure'に渡すことができれば、非常にうまくいくので、その使用法は通常どおりFigureを作成するすべての方法と一致する可能性があります。 'Position' argをチェックして、あなた(または他のユーザ)がその機能を元に戻すためにカスタム実装をオーバーライドすることもできます。 – tmpearce

+0

それは良い点です。しかし、固定位置は、図の「静かな」性質を破る可能性があります。何かが動いている間に画面上のどこでも他のことをやりたいと思っています。また、通常、私は他のユーザーには意味をなさない1つか2つの図形と、私にとっては意味をなさない数少ない図形があります。誰もが画面にそれらを課す必要はありません;-) –

関連する問題