Представление панорамирования графика в интерактивном режиме
pan on
pan xon
pan yon
pan off
pan
pan(fig,...)
h = pan(fig)
pan on
включает режим панорамирования для осей в текущей фигуре.
pan xon
включает режим панорамирования и позволяет панорамировать только в направлении X для осей в 2D представлении в текущей фигуре.
pan yon
включает режим панорамирования и позволяет панорамировать только в направлении Y для осей в 2D представлении в текущей фигуре.
pan off
выключает режим панорамирования для осей в текущей фигуре. При запуске в R2018b некоторые взаимодействия панорамирования включены по умолчанию, независимо от режима панорамирования. Если вы хотите отключить эти взаимодействия по умолчанию, то используйте disableDefaultInteractivity
функция.
pan
переключается режим панорамирования для осей в текущей фигуре к on
или off
.
pan(fig,...)
устанавливает режим панорамирования для осей в заданной фигуре.
h = pan(fig)
возвращает объект режима панорамирования фигуры для фигуры fig
для вас, чтобы настроить поведение режима.
Доступ к следующим свойствам объектов режима панорамирования.
Enable
'on'|'off'
— Задает, включен ли режим этого рисунка в настоящее время на фигуре.
Motion
'horizontal'|'vertical'|'both'
— Тип панорамирования активированного для фигуры. Это свойство только влияет на оси в 2D представлении ([0 90]
).
FigureHandle <handle>
— Связанный указатель фигуры, свойство только для чтения, которое не может быть установлено.
ContextMenu <handle>
— Задает пользовательское контекстное меню, которое будет отображено во время действия щелчка правой кнопкой.
UseLegacyExplorationModes
'off'
(значение по умолчанию) | логическое значение включения - выключения – режим Legacy в виде 'on'
или 'off'
, или как числовой или логический 1
TRUE
) или 0
ложь
). Значение 'on'
эквивалентно true
, и 'off'
эквивалентно false
. Таким образом можно использовать значение этого свойства как логическое значение. Значение хранится как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState
.
Установка этого свойства к 'on'
изменяет поведение режимов взаимодействия в фигурах пользовательского интерфейса, таким образом, они совпадают с поведением режимов в традиционных фигурах. Для получения дополнительной информации смотрите enableLegacyExplorationModes
. Если это свойство установлено в 'on'
, это не может быть возвращено к 'off'
. Это свойство только применяется к объектам панорамирования за фигуры, созданные с помощью uifigure
функционируйте или в MATLAB® Online™.
Можно программировать следующие коллбэки для операций режима панорамирования.
ButtonDownFilter <function_handle>
— Функция, чтобы прервать ButtonDown
события
Приложение может запретить операцию панорамирования при обстоятельствах, которые программист задает, в зависимости от того, что возвращает коллбэк. Указатель функции ввода должен сослаться на функцию с двумя неявными аргументами (похожий на коллбэки графического объекта):
function [res] = myfunction(obj,event_obj) % obj handle to the object clicked on % event_obj event data (empty in this release) % res [output] a logical flag to determine whether the pan % operation should take place(for 'res' set to 'false') % or the 'ButtonDownFcn' property of the object should % take precedence (when 'res' is 'true')
ActionPreCallback <function_handle>
— Функция, чтобы выполниться перед панорамированием
Установите этот коллбэк на то, если необходимо выполнить код, когда операция панорамирования начинается. Указатель на функцию должен сослаться на функцию с двумя неявными аргументами (похожий на коллбэки графического объекта):
function myfunction(obj,event_obj) % obj handle to the figure that has been clicked on % event_obj object containing struct of event data
Struct данных о событиях имеет следующее поле:
| Указатель осей, который панорамируется |
ActionPostCallback <function_handle>
— Функция, чтобы выполниться после панорамирования
Установите этот коллбэк, если необходимо выполнить код, когда операция панорамирования заканчивается. Указатель на функцию должен сослаться на функцию с двумя неявными аргументами (похожий на коллбэки графического объекта):
function myfunction(obj,event_obj) % obj handle to the figure that has been clicked on % event_obj object containing struct of event data % (same as the event data of the % 'ActionPreCallback' callback)
Следующие функции в запросе режима панорамирования и наборе, уверенном в его свойствах.
flags = isAllowAxesPan(h,ax)
— Разрешение запроса функции панорамировать оси.
Вызов функционального isAllowAxesPan
на объекте панорамирования, h
, с вектором указателей осей, ax
, когда вход возвращает логический массив той же размерности, как оси обрабатывают вектор, который указывает, разрешена ли операция панорамирования на объектах осей.
setAllowAxesPan(h,ax,flag)
— Функция, чтобы установить разрешение панорамировать оси.
Вызов функционального setAllowAxesPan
на объекте панорамирования, h
, с вектором указателей осей, ax
, и логический скаляр, flag
, или позволяет или запрещает операцию панорамирования на объектах осей.
cn = getAxesPanConstraint(h,ax)
— Функция, чтобы получить ограничения операций панорамирования.
Вызов функционального getAxesPanConstraint
на объекте панорамирования, h
, с объектом осей, ax
, когда вход возвращает ограничение для осей. Возвращенное ограничение является одним из этих значений: 'x'
Y
Z
x, y
, 'xz'
, 'yz'
, или 'unconstrained'
.
setAxesPanConstraint(h,ax,cnstr)
— Функция, чтобы установить ограничения операций панорамирования.
Вызов функционального setAxesPanConstraint
на объекте панорамирования, h
, с объектом осей, ax
, и ограничительная опция, cnstr
, устанавливает ограничение для осей. Задайте ограничение как одно из этих значений: 'x'
Y
Z
x, y
, 'xz'
, 'yz'
, или 'unconstrained'
.
sty = getAxes3DPanAndZoomStyle(h,ax)
— Функция, чтобы получить стиль операций панорамирования.
Вызов функционального getAxes3DPanAndZoomStyle
на объекте панорамирования, h
, с вектором указателей осей, ax
, когда вход возвращается, стиль панорамирования для каждого исключает. Возвращенное значение для каждого исключает, любой 'limits'
или 'camera'
.
setAxes3DPanAndZoomStyle(h,ax,style)
— Функция, чтобы установить стиль операций панорамирования.
Вызов функционального setAxes3DPanAndZoomStyle
на объекте панорамирования, h
, с вектором указателей осей, ax
, и символьный массив, style
, устанавливает стиль панорамирования на каждом, исключает. Задайте стиль как любой 'limits'
или 'camera'
.
cns = getAxesPanMotion(h,ax)
— Функция, чтобы получить ограничения операций панорамирования (не рекомендуемый, используйте getAxesPanConstraint
).
Вызов функционального getAxesPanMotion
на объекте панорамирования, h
, с вектором объектов осей, ax
, когда вход возвращает символьный массив ячеек той же размерности как ax
, который указывает, что ограничение для каждого исключает. Возвращенное значение для каждого исключает, 'horizontal'
, 'vertical'
или 'both'
.
setAxesPanMotion(h,ax,constraints)
— Функция, чтобы установить ограничения операций панорамирования (не рекомендуемый, используйте setAxesPanConstraint
).
Вызов функционального setAxesPanMotion
на объекте панорамирования, h
, с вектором объектов осей, ax
, и символьный массив, constraints
, устанавливает ограничение для каждого, исключает. Задайте ограничения как 'horizontal'
, 'vertical'
или 'both'
.
Постройте график и включите режим Pan:
plot(magic(10)); pan on % pan on the plot
Ограничьте панорамирование к оси X с помощью set
:
plot(magic(10)); h = pan; h.Motion = 'horizontal'; h.Enable = 'on'; % pan on the plot in the horizontal direction.
Создайте четыре оси как подграфики и дайте каждому различное поведение панорамирования:
ax1 = subplot(2,2,1); plot(1:10); h = pan; ax2 = subplot(2,2,2); plot(rand(3)); setAllowAxesPan(h,ax2,false); ax3 = subplot(2,2,3); plot(peaks); setAxesPanMotion(h,ax3,'horizontal'); ax4 = subplot(2,2,4); contour(peaks); setAxesPanMotion(h,ax4,'vertical'); % pan on the plots.
Создайте консервативный коллбэк для объектов режима панорамирования к триггеру. Скопируйте следующий код в новый файл, выполните его и наблюдайте поведение панорамирования:
function demo % Allow a line to have its own 'ButtonDownFcn' callback. hLine = plot(rand(1,10)); hLine.ButtonDownFcn = 'disp(''This executes'')'; hLine.Tag = 'DoNotIgnore'; h = pan; h.ButtonDownFilter = @mycallback; h.Enable = 'on'; % mouse click on the line % function [flag] = mycallback(obj,event_obj) % If the tag of the object is 'DoNotIgnore', then % return true. % Indicate what the target is. disp(['Clicked ' obj.Type ' object']) objTag = obj.Tag; if strcmpi(objTag,'DoNotIgnore') flag = true; else flag = false; end
Создайте коллбэки для пред - и постконсервативные события для режима панорамирования возражает против триггера. Скопируйте следующий код в новый файл, выполните его и наблюдайте поведение панорамирования:
function demo % Listen to pan events plot(1:10); h = pan; h.ActionPreCallback = @myprecallback; h.ActionPostCallback = @mypostcallback; h.Enable = 'on'; % function myprecallback(obj,evd) disp('A pan is about to occur.'); % function mypostcallback(obj,evd) newLim = evd.Axes.XLim; msgbox(sprintf('The new X-Limits are [%.2f,%.2f].',newLim));
Кодирование контекстного меню, которое позволяет пользователю, чтобы переключиться, чтобы масштабировать режим путем щелчка правой кнопкой:
figure plot(magic(10)); hCM = uicontextmenu; hMenu = uimenu('Parent',hCM,'Label','Switch to zoom',... 'Callback','zoom(gcbf,''on'')'); hPan = pan(gcf); hPan.ContextMenu = hCM; pan('on')
Можно создать объект режима панорамирования однажды и использовать его, чтобы настроить поведение различных осей, когда Пример 3 иллюстрирует. Можно также изменить его функции обратного вызова на лету.
Не изменяйте коллбэки фигуры в интерактивном режиме. В то время как режим активен (при панорамировании, масштабируя, и т.д.), вы получите предупреждение, при попытке изменить какой-либо из коллбэков фигуры, и операция не успешно выполнится. Одним исключением к этому правилу является фигура WindowButtonMotionFcn
коллбэк, который может быть изменен из режима. Поэтому, если вы создаете пользовательский интерфейс, который обновляет коллбэки фигуры, пользовательский интерфейс должен некоторые отслеживать, которых интерактивный режим активен, если таковые имеются, прежде, чем попытаться сделать это.
Когда вы присваиваете различные поведения панорамирования различному subplot
оси через режим возражают и затем соединяют их использующий linkaxes
функция, поведение осей, которыми вы управляете с мышью, переносят на соединенные оси, независимо от поведения, которое вы ранее устанавливаете для других осей.
Используйте инструмент Pan на панели инструментов, чтобы включить и отключить режим панорамирования на графике или выбрать Pan из меню Tools фигуры.