Matlab: Что-то вроде «относительной» позиции с uicontrol / axis; сохраняйте фиксированные поля при изменении размера

В настоящее время у меня большая головная боль, чтобы заставить работать небольшой графический интерфейс, который создается не с помощью редактора графического интерфейса, а программно! На данный момент у меня есть что-то вроде следующего:

hFig = figure();
set(hFig, 'Position', [300 200 500 400]);
plot((1:10).^2, '*-r');

% Größe des Plots so anpassen, dass links Platz für Buttons
ap = get(gca, 'TightInset');
fp = get(gcf, 'Position');
set(gca, 'Position', [160/fp(3), 30/fp(4), (fp(3)-180)/fp(3), (fp(4)-60)/fp(4)]);

uicontrol('Style', 'pushbutton', 'String', 'foo', 'Position', [15 fp(4)-60 110 30]); 
uicontrol('Style', 'pushbutton', 'String', 'bar', 'Position', [15 fp(4)-100 110 30]); 

Попробуйте изменить его размер: он не «выглядит» одинаково, что означает, что поля uicontrol не остаются в одном и том же относительном положении, а поля от оси чтобы окно рисунка стало больше. Я хочу добиться:

Иметь окно фигуры с заданной позицией (x / y, ширина и высота) с графиком внутри. Сюжет будет иметь заголовок и метки для x и y. Сделайте график по высоте и ширине, чтобы TightInset плюс поля в каждом направлении определенного размера в пикселях (например, TightInset + 10px) были такими же большими, как окно рисунка; за исключением того, что оставьте 150 пикселей свободного места слева, чтобы разместить некоторые кнопки uicontrol, и пусть они остаются в том же положении: это было бы то же самое, что можно было бы вместо этого указать положение сверху / слева (сверху = 20, слева = 10) снизу / слева.

Большое спасибо!

7
задан tim 14 December 2011 в 20:05
поделиться