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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Была ли эта тема полезной?