在使用指南创建的Matlab GUI中更改网格

时间:2016-08-12 20:01:10

标签: matlab user-interface matlab-guide

我正在使用Matlab指南来创建用户界面。一切都很好,网格似乎根据机器而变化。网格设置为10像素,并且对齐网格。所有单位都设置为字符。为什么网格改变和控制不再在网格上?

1 个答案:

答案 0 :(得分:4)

根据文档,MATLAB定义'characters'单位如下:

  

这些单位基于图形的默认uicontrol字体   根对象:

     
      
  • 字符宽度=字母x的宽度。

  •   
  • 字符高度=两行文本的基线之间的距离。

  •   
     

要访问默认的uicontrol字体,请使用get(groot,'defaultuicontrolFontName')set(groot,'defaultuicontrolFontName')

此默认字体可能因系统而异,不应用于布局GUI(为什么MATLAB将其用作默认值,我不知道这么久)。我建议使用'pixels''normalized'单位来控制GUI的布局。

为了说明不同之处,请尝试以下示例:

h1.f = figure('Name', get(groot, 'defaultuicontrolFontName'), ...
              'NumberTitle', 'off', 'ToolBar', 'none' ...
              );
h1.b1 = uicontrol('Parent', h1.f, 'Style', 'pushbutton', ...
                  'Units', 'characters', 'Position', [35 15 45 10 ], ...
                  'String', 'Button A' ...
                  );
h1.b2 = uicontrol('Parent', h1.f, 'Style', 'pushbutton', ...
                  'Units', 'characters', 'Position', [35 5 45 10 ], ...
                  'String', 'Button B' ...
                  );

oldfont = get(groot, 'defaultuicontrolFontName');
set(groot, 'defaultuicontrolFontName', 'Comic Sans MS');

h2.f = figure('Name', get(groot, 'defaultuicontrolFontName'), ...
              'NumberTitle', 'off', 'ToolBar', 'none' ...
              );
h2.b1 = uicontrol('Parent', h2.f, 'Style', 'pushbutton', ...
                  'Units', 'characters', 'Position', [35 15 45 10 ], ...
                  'String', 'Button A' ...
                  );
h2.b2 = uicontrol('Parent', h2.f, 'Style', 'pushbutton', ...
                  'Units', 'characters', 'Position', [35 5 45 10 ], ...
                  'String', 'Button B' ...
                  );

set(groot, 'defaultuicontrolFontName', oldfont);

产生2个数字窗口:

ms sans serif comic sans ms

请注意,这两个数字都使用完全相同的代码生成,但它们的布局却截然不同。