2013-09-23 2 views
1

У меня есть GUI MATLAB, в котором есть фигура (объект «оси»). Я хотел бы знать программно, есть ли или нет график в этой фигуре/осях, потому что я хотел бы добавить элемент управления линией оси. Код будет следующим:MATLAB GUI - Как я могу программно определить, является ли объект «ось» пустым или нет?

if figure_is_empty 
    axis([xMin xMax yMin yMax]) 
else 
    'don t do anything, because there is nothing to resize' 
end 

Любое предложение?

ответ

1

Вы можете использовать CurrentAxes свойство figure объекта:

if ~isempty(get(gcf,'CurrentAxes')) 
    axis([xMin xMax yMin yMax]) 
else 
    % don't do anything, because there is nothing to resize' 
end 

См Figure properties для более подробной информации.

+0

Вы можете заменить 'gcf' на ручке вашей фигуры, если у вас есть. – am304

0

Предполагая, что Н ручка оси вы хотите проверить:

~isempty(get(h,'Children'));

«Дети» содержит дескрипторы графических объектов в осях, так что если вы хотите, чтобы проверить более конкретно (например, чтобы различать изображение и сюжет), вы можете вернуть список того, какие типы объектов присутствуют. Это вернет пустой, если не существует дочерних объектов:

get(get(h,'Children'),'Type')

+0

Я думал об этом, но проблема в том, что «Дети» включают в себя оси и все другие элементы интерфейса. Кроме того, если свойство 'HandleVisibility' для оси установлено в' off', оно не будет отображаться: «Дети фигуры. Вектор, содержащий ручки всех осей, объекты пользовательского интерфейса, отображаемые на чертеже Вы можете изменить порядок ручек и тем самым изменить укладку объектов на дисплее. Когда свойство HandleVisibility объекта выключено, оно не указано в свойстве родительских дочерних элементов. Дополнительную информацию см. В разделе HandleVisibility. " – am304

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