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

Получение указателей к специальным объектам

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

Эти объекты включают:

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

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

  • Текущий объект - Указатель на выбранный объект

  • Объект коллбэка - указатель на объект, коллбэк выполняет.

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

Текущая фигура, оси и объект

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

  • Это current figure окно, предназначенное для получения графического выхода.

  • current axes является осями, в которых функции построения графика отображают графики.

  • Этот current object является последним созданным или выбранным объектом.

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 для ссылки на объект коллбэка.

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