Matlab, установка размера фигуры по умолчанию, но не заботится о положении? - PullRequest
2 голосов
/ 11 марта 2012

Аналогично: Настройка размера фигуры на графике

Но я просто хочу установить ширину и высоту , не заботясь о положении.Желаемое поведение заключается в том, что я могу перетаскивать фигуру по желанию, но при каждом повторном рисовании размер будет фиксированным.

Мне не нравится метод в приведенной выше ссылке, потому что вы должны предоставить координаты (x, y) для позиции, что раздражает, когда код развивается, или я использую разные компьютеры.Но, возможно, есть более разумный способ использовать эту функцию set ()?

РЕДАКТИРОВАТЬ: Cool @ ответ ниже, вот моя обновленная функция.Другое дело - быть «тихим», чтобы фигура не фокусировалась постоянно.

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 Ответ

2 голосов
/ 11 марта 2012

Объедините его с соответствующей функцией get:

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

Это сохранит положение по умолчанию и изменит только ширину и высоту.

...