但是,我只想设置宽度和高度,而不关心位置。理想的行为是我可以随意拖动图形,但每次重新绘制时大小都会固定。
我不喜欢上面链接中的方法,因为您必须提供位置的 (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
最佳答案
将其与相应的get
函数组合:
figure
pos = get(gcf,'Position');
pos(3:4) = [w h];
set(gcf,'Position',pos);
这将保留默认位置,仅更改宽度和高度。
关于matlab,设置默认图形大小,但不关心位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9650056/