matlab,设置默认图形大小,但不关心位置?

时间:2012-03-10 20:47:46

标签: matlab user-interface matlab-figure

类似于:Setting graph figure size

但是,我只是想设置宽度和高度,而不关心位置。期望的行为是我可以随意拖动图形,但在每次重新绘制时,尺寸将被修复。

我不喜欢上面链接中的方法,因为你必须为位置提供一个(x,y)坐标,这在代码开发时很烦人,或者我使用不同的计算机。但也许有一种更聪明的方法来使用set()函数?

编辑:酷@回答下面,这是我的更新功能。另一件事是“沉默”,所以这个数字不会不断拉动焦点。

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

1 个答案:

答案 0 :(得分:2)

将其与相应的get函数结合使用:

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

这将保持默认位置,仅更改宽度和高度。