iptSetPointerBehavior

Сохраните структуру поведения указателя в графическом объекте

Описание

пример

iptSetPointerBehavior(obj,pointerBehavior) сохраняет указанную структуру поведения указателя в указанном графическом объекте, obj. Если obj - массив объектов, затем iptSetPointerBehavior сохраняет одну и ту же структуру в каждом объекте.

Если на рисунке установлен менеджер указателей, то менеджер указателей вызывает эти функции, когда мышь переходит, а затем выходит из объекта на рисунке. Посмотрите iptPointerManager.

iptSetPointerBehavior(obj,[]) удаляет поведение указателя из графического объекта или объектов.

iptSetPointerBehavior(obj,fun) создает структуру поведения указателя, настраивая enterFcn поле к заданной функции fun, и установка traverseFcn и exitFcn поля в []. Этот синтаксис предоставляется как удобство, потому что для многих распространенных применений, только enterFcn поле необходимо.

Примеры

свернуть все

Показать рисунок с двумя прямоугольными закрашенными фигурами графическими объектами.

patchobj1 = patch([.25 .75 .75 .25 .25],...
               [.25 .25 .75 .75 .25], 'r');
patchobj2 = patch([.05 .15 .15 .05 .05],...
               [.05 .05 .95 .95 .05], 'b');
xlim([0 1])
ylim([0 1])

Задайте поведение указателя путем создания структуры с тремя полями, enterFcn, exitFcn, и traverseFcn.

Всякий раз, когда указатель пересекает заданный объект, меняйте указатель мыши на fleur и заголовок рисунка. Задайте это поведение с помощью enterFcn поле.

pb.enterFcn = @(fig,currentPoint) set(fig, ...
    'Name','Over Patch', ...
    'Pointer','fleur');

Когда указатель уйдет от объекта, восстановите исходный указатель и заголовок рисунка. Задайте это поведение с помощью exitFcn поле.

pb.exitFcn = @(fig,currentPoint) set(fig, ...
    'Name','', ...
    'Pointer','arrow');

Не изменяйте рисунок, когда указатель пересекает объект. Установите traverseFcn поле как [].

pb.traverseFcn = [];

Создайте диспетчер указателей на текущей фигуре. Затем связайте структуру поведения указателя pb с обоими объектами закрашенной фигуры. Перемещайте мышь вокруг рисунка, чтобы увидеть изменение поведения указателя мыши.

iptSetPointerBehavior([patchobj1,patchobj2],pb);
iptPointerManager(gcf)

Показать рисунок с прямоугольной закрашенной фигурой графическим объектом. Увеличьте пределы x и y изображения, чтобы добавить некоторое пустое пространство вокруг закрашенной фигуры.

patchobj = patch([.25 .75 .75 .25 .25],...
               [.25 .25 .75 .75 .25], 'r');
xlim([0 1])
ylim([0 1])

Задайте поведение указателя путем создания структуры с именем pb с тремя полями.

  • The enterFcn и exitFcn для полей задано значение [] поэтому указатель не предпринимает никаких действий, когда перемещается через контур графического объекта.

  • The traverseFcn задается как указатель на функцию overMe, которая определяется как вспомогательная функция в конце этого примера. Когда указатель перемещается над графическим объектом, функция helper изменяет символ указателя в зависимости от местоположения указателя.

pb.enterFcn = [];
pb.exitFcn = [];
pb.traverseFcn = @overMe;

Создайте диспетчер указателей на текущей фигуре. Затем связайте структуру поведения указателя pb с графическим объектом Patch patchobj. Перемещайте мышь вокруг рисунка, чтобы увидеть изменения в поведении указателя мыши.

iptPointerManager(gcf);
iptSetPointerBehavior(patchobj,pb);

Функция помощника

function overMe(hFigure,currentPoint)
%overMe Set figure pointer depending on pointer location.
%   overMe(hFigure,currentPoint) sets the hFigure mouse pointer to be
%   either 'topr', 'topl', 'botr', 'botl', depending on whether
%   currentPoint is in the top right, top left, bottom right, or bottom
%   left of the hFigure's current axes.

hAxes = get(hFigure,'CurrentAxes');

% Get the axes position in pixel units.
oldUnits = get(hAxes,'Units');
set(hAxes,'Units','pixels');
axesPosition = get(hAxes,'Position');
set(hAxes,'Units',oldUnits);

x_middle = axesPosition(1) + 0.5*axesPosition(3);
y_middle = axesPosition(2) + 0.5*axesPosition(4);

x = currentPoint(1,1);
y = currentPoint(1,2);

if (x > x_middle)
    if (y > y_middle)
        pointer = 'topr';
    else
        pointer = 'botr';
    end
else
    if (y > y_middle)
        pointer = 'topl';
    else
        pointer = 'botl';
    end
end

set(hFigure,'Pointer',pointer);
end

Входные параметры

свернуть все

Графический объект, заданный как указатель на графические объекты рисунка, осей, uipanel или изображений. obj может также быть массивом графических объектов.

Поведение указателя, заданное как структура с тремя полями.

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

ОбластьПри вызове
enterFcnВызывается, когда указатель мыши перемещается над объектом.
traverseFcnВызывается один раз, когда указатель мыши перемещается над объектом и вызывается снова каждый раз, когда мышь перемещается внутри объекта.
exitFcnВызывается, когда указатель мыши покидает объект.

Поведение указателя при перемещении указателя над объектом, заданным как указатель на функцию.

Типы данных: function_handle

Введенный в R2006a
Для просмотра документации необходимо авторизоваться на сайте