在使用指南创建的 Matlab GUI 中更改网格
Changing grid in Matlab GUI created with guide
我正在使用 Matlab 指南创建用户界面。一切正常,网格似乎根据机器而改变。网格设置为 10 像素,对齐网格已打开。所有单位都设置为字符。为什么网格发生变化而控件不再位于网格上?
根据文档,MATLAB 定义 'characters'
单位如下:
These units are based on the default uicontrol
font of the graphics
root object:
Character width = width of the letter x
.
Character height = distance between the baselines of two lines of text.
To access the default uicontrol font, use get(groot,'defaultuicontrolFontName')
or 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 个数字 windows:
请注意,两个图都是使用完全相同的代码生成的,但它们的布局却截然不同。
我正在使用 Matlab 指南创建用户界面。一切正常,网格似乎根据机器而改变。网格设置为 10 像素,对齐网格已打开。所有单位都设置为字符。为什么网格发生变化而控件不再位于网格上?
根据文档,MATLAB 定义 'characters'
单位如下:
These units are based on the default
uicontrol
font of the graphics root object:
Character width = width of the letter
x
.Character height = distance between the baselines of two lines of text.
To access the default uicontrol font, use
get(groot,'defaultuicontrolFontName')
orset(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 个数字 windows:
请注意,两个图都是使用完全相同的代码生成的,但它们的布局却截然不同。