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