панорамирование

Представление Pan графика в интерактивном режиме

Синтаксис

панорамирование на
панорамирование xon
панорамирование вон там
промыть золотоносный песок
панорамирование
панорамирование (fig...)
h = панорамирование (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> — Связанный указатель фигуры, свойство только для чтения, которое не может быть установлено.

Обратные вызовы режима панорамирования

Можно программировать следующие обратные вызовы для операций режима панорамирования.

  • 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', 'xy', 'xz', 'yz' или 'unconstrained'.

  • setAxesPanConstraint(h,ax,cnstr) — Функционируйте, чтобы установить ограничения операций панорамирования.

    Вызывая функциональный setAxesPanConstraint на объекте панорамирования, h, с объектом осей, ax, и ограничительной опцией, cnstr, устанавливает ограничение для осей. Задайте ограничение как одно из этих значений: 'x', 'y', 'z', 'xy', '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'.

Примеры

Пример 1 - переход к режиму панорамирования

Постройте график графика и включите режим Pan:

plot(magic(10));
pan on
% pan on the plot

Пример 2 - ограниченное панорамирование

Ограничьте панорамирование к оси X с помощью set:

plot(magic(10));
h = pan;
h.Motion = 'horizontal';
h.Enable = 'on';
% pan on the plot in the horizontal direction.

Пример 3 - ограниченное панорамирование в подграфиках

Создайте четыре оси как подграфики и дайте каждому различное поведение панорамирования:

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.

Пример 4 - кодирование обратного вызова ButtonDown

Создайте консервативный обратный вызов для объектов режима панорамирования к триггеру. Скопируйте следующий код в новый файл, выполните его и наблюдайте поведение панорамирования:

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

Пример 5 - кодирующий пред - и поведение постобратного вызова

Создайте обратные вызовы для пред - и постконсервативные события для режима панорамирования возражает против триггера. Скопируйте следующий код в новый файл, выполните его и наблюдайте поведение панорамирования:

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));

Пример 6 - создание контекстного меню для режима панорамирования

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

figure
plot(magic(10)); 
hCM = uicontextmenu; 
hMenu = uimenu('Parent',hCM,'Label','Switch to zoom',...
        'Callback','zoom(gcbf,''on'')'); 
hPan = pan(gcf); 
hPan.UIContextMenu = hCM; 
pan('on')
Вы не можете добавить элементы к встроенному контекстному меню панорамирования, но можно заменить его на собственное.

Советы

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

Примечание

Не изменяйте обратные вызовы фигуры в интерактивном режиме. В то время как режим активен (при панорамировании, масштабируя, и т.д.), вы получите предупреждение, при попытке изменить какой-либо из обратных вызовов фигуры, и операция не успешно выполнится. Одним исключением к этому правилу является фигура обратный вызов WindowButtonMotionFcn, который может быть изменен из режима. Поэтому, если вы создаете пользовательский интерфейс, который обновляет обратные вызовы фигуры, пользовательский интерфейс должен некоторые отслеживать, которых интерактивный режим активен, если таковые имеются, прежде, чем попытаться сделать это.

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

Альтернативы

Используйте инструмент Pan на панели инструментов, чтобы включить и отключить режим панорамирования на графике или выбрать Pan из меню Tools фигуры.

Представлено до R2006a

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