我正在使用Matlab指南来创建用户界面。一切都很好,网格似乎根据机器而变化。网格设置为10像素,并且对齐网格。所有单位都设置为字符。为什么网格改变和控制不再在网格上?
答案 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个数字窗口:
请注意,这两个数字都使用完全相同的代码生成,但它们的布局却截然不同。