2015-02-10 3 views
0

У меня есть тривиальный вопрос, но вы не можете найти эффективное решение. Надеюсь, кто-то может мне помочь в этом отношении.Выравнивание осей разных размеров в графическом интерфейсе

В настоящее время у меня есть 4 разных осей в графическом интерфейсе. ax1 (верхний левый) и ax4 (внизу слева) должны быть выровнены по вертикали и аналогично ax2 (верхний правый) и ax4 (нижний правый) должны быть выровнены по вертикали. (Я приложил образец изображения)

ax1 и ax2 используются для показа изображений, которые обычно больше по размеру (~ 512x512) и ax3 & ax4 используются для отображения изображений размером ~ 43x512. Несмотря на то, что я создал оси с осью X одинакового размера, когда я показываю изображения, они меняют размер и больше не выравниваются. Независимо от того, какие изображения я показываю, я хочу, чтобы верхнее и нижнее изображения имели одинаковую длину и всегда выровнялись.

Я попытался сохранить XLim таким же; XData то же самое, но все равно не работает.

Любая помощь очень ценится.

Спасибо, Бал

+0

1) Там нет изображения прилагается и 2) вы используете GUIDE, чтобы построить свой GUI? –

+0

Добро пожаловать в переполнение стека! Здесь мы решаем ошибки в коде в формате Q & A. Пожалуйста, разместите код, который вы написали, и изображение, иллюстрирующее проблему. – bluefog

ответ

0

Вы можете использовать функцию align, которая используется, чтобы сделать это. Вызывающий синтаксис выглядит следующим образом:

align(HandleList,'HorizontalAlignment','VerticalAlignment') 

Поэтому в вас случае, вы могли бы написать что-то вроде этого (Обратите внимание, что вы написали AX4 дважды в вашем вопросе, я думаю, вы хотите, чтобы выровнять оси 1-3 и 2-4):

align([handles.ax1 handles.ax3],'VerticalAlignment','none', 'HorizontalAlignment','center') 

и также для других 2 осей:

align([handles.ax2 handles.ax4],'VerticalAlignment','none', 'HorizontalAlignment','center') 
+0

Спасибо за ваш быстрый ответ. Похоже, моя проблема может быть не просто выравниванием. Я попытался выровнять их, но когда размер ax1 изменяется (например, от 512x512 до 150 x 250, размер изображения в ax2 будет 43 x 250), и, следовательно, я хочу, чтобы они изменялись пропорционально и все еще были выровнены. Как вы думаете, мне нужно изменить некоторые свойства, чтобы указать, что они изменяются пропорционально OR ax2, чтобы следовать за ax1 всякий раз, когда изменяется размер? Может быть, использовать свойство «Позиция»? –

+0

Mhh Я думаю, вы могли бы использовать функцию 'linkprop' для связывания свойства позиции осей. Информация [здесь] (http://www.mathworks.com/help/matlab/ref/linkprop.html). Скажите, пожалуйста, если это не сработает! –

+0

Спасибо за ваш ответ. Но linkprop не решила проблему полностью. Похоже, мне нужно что-то изменить, чтобы соответствовать топорам выше. Я думаю, что я нашел, если размер изображения отличается от размера осей, изображение автоматически изменяется и, следовательно, не совпадает с размерами осей при отображении. Поэтому, я думаю, мне нужно что-то (команда или свойство), которые будут заполнять оси при отображении. спасибо! –

Смежные вопросы