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 с тремя полями.

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

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

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

Создайте менеджера по указателю в текущей фигуре. Затем сопоставьте структуру поведения указателя pb с графическим объектом Закрашенной фигуры 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