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

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

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

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

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

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

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

  • Объект Callback — Указатель объекта, коллбэк которого выполняется.

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

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

Важной концепцией в графике 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 Возвращает значение свойства Root CallbackObject. Это свойство содержит указатель объекта, коллбэк которого выполняется. gcbo опционально возвращает указатель фигуры, содержащей объект коллбэка.

  • gcbf Возвращает указатель фигуры, содержащей объект коллбэка.

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

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

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