Matlab UIControl Units
Я использую uicontrol для создания элементов GUI. Ниже мой код
uicontrol('Style','pushbutton', 'String','Load data','Parent',hTabs(1),'Position',[250 825 80 20], 'Callback',@ButtonCallback);
Здесь проблема в том, что когда я использую нормализованную опцию Units, элемент GUI исчезает с экрана. Я хочу использовать нормализованный, чтобы графический интерфейс настраивался на разные разрешения экрана. Любая идея по этому поводу будет очень полезна для меня.
2 ответа
Когда вы используете Normalized
в единицах измерения вам необходимо определить положение между 0 и 1, где 0 - это нижняя / левая сторона, а 1 - общая высота / ширина содержащего объекта.
В настоящее время вы определяете позицию, используя числа, которые находятся за пределами этого диапазона. Вы можете сделать две вещи.
- Переключите единицы на
normalized
в отдельном вызове функции (показано ниже) - Создать
uicontrol
с нормализованными единицами, но вам придется рассчитать правильный вектор положения
Вот примеры того, как это сделать
Простое решение заключается в создании uicontrol
а затем установить единицы для нормализации в отдельном вызове
u = uicontrol(...) %don't specify the units
set(u,'Units', 'Normalized'); % this solves your problem
Если вы хотите получить вектор положения в нормализованных единицах
normPos = get(u, 'Position') % get the position in normal space
Затем используйте эти цифры для создания uicontrol
с нормализованными единицами:
u = uicontrol(...,'Units','Normalized', 'Position', normPos);
При использовании 'units','normalized'
вариант вы должны изменить свой вектор положения. Система отсчета фигур имеет координаты от 0 до 1.
Например
uicontrol('Style','pushbutton',...
'String','Load data',...
'Parent',hTabs(1),...
'units','normalized',...
'Position',[0 0 0.1 0.1],...
'Callback',@ButtonCallback);
дает вам кнопку 10% высоты и ширины в левом нижнем углу родительской панели.