Предотвратите доступ к фигурам и осям

Зачем препятствовать доступу

В некоторых ситуациях важно предотвратить превращение конкретных рисунков или осей в цель для выхода графических данных. То есть не дать им стать текущей фигурой, как возвращено gcf, или текущей системы координат, как возвращено gca.

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

Как предотвратить доступ

Предотвратите MATLAB® функции от нацеливания на конкретный рисунок или оси путем удаления их указателей из списка видимых указателей.

Два свойства управляют видимостью указателя: HandleVisibility и ShowHiddenHandles

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

  • 'on' - Вы можете получить указатель на объект с функциями, которые возвращают указатели, такие как (gcf, gca, gco, get, и findobj). Это поведение по умолчанию.

  • 'callback' - Указатель на объект виден только в рабочей области функции обратного вызова.

  • 'off' - указатель скрыт от всех функций, выполняемых в командном окне и в функциях обратного вызова.

Свойства, затронутые видимостью указателя

Когда объект HandleVisibility установлено в 'callback' или 'off':

  • Указатель на объект не отображается в Children его родительского элемента свойство.

  • Фигуры не появляются в корневых CurrentFigure свойство.

  • Оси не появляются в CurrentAxes содержащего рисунка свойство.

  • Графические объекты не появляются в CurrentObject рисунка свойство.

Функции, затронутые видимостью указателя

Когда указатель не отображается в его родительский список дочерних элементов, функции, которые получают указатели путем поиска иерархии объектов, не могут вернуть указатель. Эти функции включают get, findobj, gca, gcf, gco, newplot, cla, clf, и close.

Значения, возвращенные gca и gcf

Когда рисунок со скрытыми ручками является самым верхним на экране, но имеет рисунки с видимыми ручками, сложенные позади него, gcf возвращает самую верхний рисунок указателя на видимый элемент в стеке. То же поведение верно для gca. Если никаких рисунков или осей видимых указателей не существует, вызов gcf или gca создает единицу.

Доступ к объектам Hidden-Handle

Корневой ShowHiddenHandles свойство включает и отключает управление видимостью указателя. По умолчанию ShowHiddenHandles является 'off', что означает, что MATLAB следует настройке каждого объекта HandleVisibility свойство.

Настройка ShowHiddenHandles на on эквивалентно установке HandleVisibility свойство всех объектов в графической иерархии, чтобы on.

Примечание

Заголовок осей и текстовые объекты подписей по осям не являются дочерними элементами осей. Для доступа к указателям на эти объекты используйте оси Title, XLabel, YLabel, и ZLabel свойства.

close функция также позволяет получить доступ к рисункам со скрытыми указателями с помощью hidden опция. Для примера:

close('hidden') 

закрывает самую верхний рисунок на экране, даже если ее указатель скрыт.

Объединение all и hidden опции:

close('all','hidden')

закрывает все рисунки.

Валидность указателя в зависимости от видимости указателя

Все указатели остаются действительными независимо от состояния их HandleVisibility свойство. Если вы назначили указатель на объект переменной, можно всегда задать и получить его свойства с помощью этой переменной handle.