Обнаружение указателя мыши над Path2D

Я создал Path2D, который представляет незамкнутая форма, состоящая из прямых линий:

введите здесь описание изображения

Я хочу иметь возможность определять, когда щелкают мышью, а указатель мыши находится рядом (в пределах нескольких пикселей) от пути. Используя contains метод не работает, потому что алгоритм рассматривает незамкнутую фигуру как неявно замкнутую (т. е. рисуя прямую линию между начальной и конечной точками).

Кто-нибудь знает о другом механизме для достижения этого?


person Adamski    schedule 22.08.2012    source источник


Ответы (1)


  1. Создайте BasicStroke (ширина определяет допуск на расстояние в пикселях)
  2. Не рисуйте с его помощью, используйте его метод createStrokedShape только для создания второй формы из вашей фигуры. Эта вторая фигура описывает контур фигуры, которая была бы заполнена, если бы вы нарисовали свою первую фигуру с помощью BasicStroke.
  3. Используйте метод contains этой второй формы

Из документации по API Stroke.createStrokedShape:

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

person lbalazscs    schedule 22.08.2012
comment
Потрясающий! - Спасибо за это. К сожалению, я только что создал процедуру для составления области из нескольких тонких прямоугольников, но теперь мне удалось заменить эти 20-30 строк кода на: cachedPathBoundary = new BasicStroke(PATH_BOUNDARY_THICKNESS).createStrokedShape(path); - person Adamski; 22.08.2012