Захватывание клики мыши

Свойства, которые управляют ответом на клики мыши

Существует два свойства, которые определяют, если и как объекты отвечают на клики мыши:

  • PickableParts Определяет, захватывает ли объект клики мыши

  • HitTest Определяет, может ли объект ответить на клик мыши, это получает или передает нажатие кнопки своему самому близкому предку.

Объекты передают нажатие кнопки через иерархию объектов до достижения объекта, который может ответить.

Программирование ответа на клик мыши

Когда объект получает и отвечает на клик мыши, объект:

  • Выполняется его кнопка вниз функционируют в ответ на мышь, щелкают левой кнопкой — Если объект задает обратный вызов для свойства ButtonDownFcn, MATLAB® выполняет этот обратный вызов.

  • Контекстное меню отображений в ответ на мышь щелкает правой кнопкой — Если объект задал контекстное меню с помощью свойства UIContextMenu, MATLAB вызывает это контекстное меню.

Примечание

Фигуры не имеют свойства PickableParts. Фигуры выполняют функции обратного вызова кнопки независимо от установки их свойства HitTest.

Примечание

Если оси PickableParts свойство установлено в 'none', дочерние элементы осей не могут захватить клики мыши. В этом случае все клики мыши получены фигурой.

Комбинации Значений PickablePart/HitTest

Используйте свойства PickableParts и HitTest реализовать следующие поведения:

  • Объект, по которому кликают, захватывает мышь нажатие кнопки и отвечает кнопкой вниз обратный вызов или контекстное меню.

  • Объект, по которому кликают, захватывает мышь нажатие кнопки и передает клик мыши одному из его предков, которые могут ответить кнопкой вниз обратный вызов или контекстное меню.

  • Объект, по которому кликают, не захватывает мышь нажатие кнопки. Клик мыши может быть получен объектами позади объекта, по которому кликают.

Эта таблица суммирует ответ на клик мыши на основе значений свойств.

Оси PickablePartsPickableParts HitTest Результат клика мыши

видимый/весь

видимый (значение по умолчанию)

на (значении по умолчанию)

Нажатие на видимые части объекта выполняет кнопку вниз обратный вызов или вызывает контекстное меню

видимый/весь

все

на

Нажатие на какую-либо часть объекта, даже если не видимый, делает объектный ток и выполняет кнопку вниз обратный вызов или вызывает контекстное меню

visible/all/none

'none'

вкл\выкл

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

'none'

visible/all/none

вкл\выкл

Нажатие на любые дочерние объекты осей никогда не выполняет кнопку вниз обратный вызов или вызывает контекстное меню

MATLAB ищет предков, использующих свойство Parent каждого объекта до нахождения подходящего предка или достижения фигуры.

Передача клика мыши иерархия

Рассмотрите следующую иерархию объектов и их настроек свойства PickableParts и HitTest.

Этот код создает иерархию:

function pickHit
f = figure;
ax = axes;
p = patch(rand(1,3),rand(1,3),'g');
l = line([1 0],[0 1]);
set(f,'ButtonDownFcn',@(~,~)disp('figure'),...
   'HitTest','off')
set(ax,'ButtonDownFcn',@(~,~)disp('axes'),...
   'HitTest','off')
set(p,'ButtonDownFcn',@(~,~)disp('patch'),...
   'PickableParts','all','FaceColor','none')
set(l,'ButtonDownFcn',@(~,~)disp('line'),...
   'HitTest','off')
end

Нажатие на строку

Щелкните левой кнопкой по строке:

  • Строка становится текущим объектом, но не может выполнить его обратный вызов ButtonDownFcn, потому что его свойством HitTest является off.

  • Строка передает хит самому близкому предку (родительские оси), но оси не могут выполнить его обратный вызов ButtonDownFcn, таким образом, оси передают хит фигуре.

  • Фигура может выполнить его обратный вызов, таким образом, MATLAB отображает figure в Командном окне.

Нажатие на закрашенную фигуру

Закрашенной фигурой FaceColor является none. Однако PickableParts закрашенной фигуры является all, таким образом, можно выбрать закрашенную фигуру путем нажатия на пустую поверхность и край.

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

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