【问题标题】:matlab, setting default figure size, but don't care about position?matlab,设置默认图形大小,但不关心位置?
【发布时间】:2012-03-27 20:21:33
【问题描述】:

类似于: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

【问题讨论】:

    标签: matlab user-interface matlab-figure


    【解决方案1】:

    结合对应的get函数:

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

    这将保持默认位置,只改变宽度和高度。

    【讨论】:

    • 酷,用这个包含在我的 sfigure() 函数中的技巧编辑了我的问题。
    • @peterkarasev 看起来不错...如果您可以将 varargin 列表传递给figure,那将非常酷,因此它的用法可以与通常创建图形的所有方法一致。您甚至可以检查 Position 参数并允许它覆盖您的自定义实现,以防您(或其他用户)想要恢复该功能。
    • 是的,这很好。但是,固定的位置可能会破坏人物的“沉默”性质;您希望能够在运行时在屏幕上的任何位置执行其他操作。此外,通常我有一个或两个对其他用户有意义的数字和另外一些只对我有意义的数字;无需将这些强加在每个人的屏幕上;-)
    猜你喜欢
    • 1970-01-01
    • 2014-11-12
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2013-06-18
    相关资源
    最近更新 更多