2012-08-22 11 views
6

Mam skonstruował Path2D który reprezentuje kształt niezamkniętych składający się z prostymi:Mouse wykrywanie wskaźnik nad Path2D

enter image description here

Chcę być w stanie wykryć, gdy mysz kliknięciu i umieszczeniu kursora myszy blisko (w obrębie kilku pikseli) ścieżki. Korzystanie z metody contains nie działa, ponieważ algorytm traktuje zamknięty kształt jako niejawnie zamknięty (tj. Rysując linię prostą między punktami początkowym i końcowym).

Czy ktoś wie o innym mechanizmie do osiągnięcia tego?

Odpowiedz

9
  1. Tworzenie BasicStroke (szerokość kontroluje swój piksel na odległość tolerancji)
  2. Nie wyciągać z niej korzystać tylko jego metodę createStrokedShape stworzyć drugi kształt od kształtu. Ten drugi kształt opisuje kontur kształtu, który byłby wypełniony, gdybyś narysował swój pierwszy kształt za pomocą BasicStroke.
  3. Użyj zawiera metodę tego drugiego kształtu

Od Stroke.createStrokedShape dokumentacji API:

zwraca kształt konturu, który otacza obszar, który powinien być malowane gdy kształt jest pogłaskał według reguły zdefiniowane przez obiekt implementujący interfejs obrysów.

+0

Awesome! - Dzięki za to. Niestety właśnie zbudowałem procedurę rutynowania obszaru z wielu cienkich prostokątów, ale udało mi się teraz zastąpić to 20-30 linii kodu: cachedPathBoundary = new BasicStroke (PATH_BOUNDARY_THICKNESS) .createStrokedShape (path); – Adamski

Powiązane problemy