exponenta event banner

Специальные идентификаторы объектов

Получение дескрипторов для специальных объектов

MATLAB ® предоставляет функции, возвращающие важные дескрипторы объектов для получения этих дескрипторов при необходимости.

К этим объектам относятся:

  • Текущая фигура - дескриптор фигуры, которая является текущей целью для графических команд.

  • Текущие оси (Current axes) - дескриптор осей на текущем рисунке, который является целью для графических команд.

  • Текущий объект - дескриптор выбранного объекта

  • Объект обратного вызова - дескриптор объекта, обратный вызов которого выполняется.

  • Рисунок обратного вызова - дескриптор рисунка, который является родителем объекта обратного вызова.

Текущий рисунок, оси и объект

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

  • Текущий рисунок - это окно, предназначенное для получения выходных графических данных.

  • Текущие оси - это оси, в которых функции печати отображают графики.

  • Текущий объект является последним созданным или выбранным объектом.

MATLAB сохраняет три дескриптора, соответствующие этим объектам, в соответствующем свойстве предка.

Эти свойства позволяют получить дескрипторы следующих ключевых объектов:

hRoot = groot;
hFigure = hRoot.CurrentFigure;
hAxes = hFigure.CurrentAxes;
hobj = hFigure.CurrentObject;

Функции удобства

Следующие команды являются краткими обозначениями для запросов свойств.

  • gcf - Возвращает значение корня CurrentFigure или создает фигуру, если нет текущей фигуры. Фигура с её HandleVisibility свойство имеет значение off не может стать текущей фигурой.

  • gca - Возвращает значение текущего показателя CurrentAxes или создает оси при отсутствии текущих осей. Оси со своими HandleVisibility свойство имеет значение off не могут стать текущими осями.

  • gco - Возвращает значение текущего показателя CurrentObject собственность.

Используйте эти команды в качестве входных аргументов для функций, которым требуются дескрипторы объектов. Например, можно щелкнуть объект линии, а затем использовать gco для указания маркера перемещения к set команда,

set(gco,'Marker','square')

или щелкните объект оси, чтобы задать свойство оси:

set(gca,'Color','black')

Можно получить маркеры перемещения всех графических объектов в текущих осях (за исключением скрытых маркеров перемещения):

h = get(gca,'Children');

а затем определите типы объектов:

get(h,'Type')
ans = 
      'text'
      'patch'
      'surface'
      'line'

Хотя gcf и gca обеспечивают простое средство получения текущих дескрипторов фигур и осей, они менее полезны в кодовых файлах. Особенно важно, если код является частью приложения на уровне MATLAB, где не известны действия пользователя, которые могут изменить эти значения.

Сведения о том, как запретить пользователям доступ к дескрипторам графических объектов, которые требуется защитить, см. в разделе Запрет доступа к фигурам и осям.

Рисунок объекта обратного вызова и обратного вызова

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

  • gcbo - Возвращает значение корня CallbackObject собственность. Это свойство содержит дескриптор объекта, обратный вызов которого выполняется. gcbo дополнительно возвращает дескриптор фигуры, содержащей объект обратного вызова.

  • gcbf - возвращает дескриптор фигуры, содержащей объект обратного вызова.

MATLAB сохраняет значение CallbackObject синхронизировано с выполняемым в данный момент обратным вызовом. Если один обратный вызов прерывает выполнение обратного вызова, MATLAB обновляет значение CallbackObject собственность.

При записи функций обратного вызова для CreateFcn и DeleteFcn, всегда использовать gcbo для ссылки на объект обратного вызова.

Дополнительные сведения о записи функций обратного вызова см. в разделе Определение обратного вызова.