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

Советы

  • Если вы задаете использование поведения указателя iptSetPointerBehavior и затем измените указатель фигуры без использования iptSetPointerBehavior, затем iptPointerManager может не обновиться, чтобы отразить новое поведение. Некоторые способы изменить указатель фигуры без использования iptSetPointerBehavior включайте объекты ROI использования, такие как Polygon, другой графический объект, другой пользовательский пользовательский интерфейс или код, который изменяет указатель из коллбэка.

Смотрите также

|

Введен в R2006a