2012-08-22 14 views
6

he construido un Path2D que representa una forma no cerrada que consiste en líneas rectas:ratón detección puntero sobre un Path2D

enter image description here

Quiero ser capaz de detectar cuando se hace clic en el ratón y el puntero del ratón se cerca de (a unos pocos píxeles de) la ruta. El uso del método contains no funciona porque el algoritmo trata la forma no cerrada como implícitamente cerrada (es decir, dibujando una línea recta entre los puntos de inicio y fin).

¿Alguien conoce otro mecanismo para lograr esto?

Respuesta

9
  1. Crear una BasicStroke (el ancho de píxel controla su distancia de tolerancia)
  2. no se dibujan con él, sólo utiliza su método createStrokedShape para crear una segunda forma de su forma. Esta segunda forma describe el contorno de la forma que se llenaría si dibujara su primera forma con BasicStroke.
  3. uso del método contiene de esta segunda forma

De Stroke.createStrokedShape documentación de la API:

Devuelve una forma de contorno que encierra el área que debe ser pintado cuando la forma es apretada según las reglas definidas por el objeto que implementa la interfaz de trazo.

+0

Awesome! - Gracias por esto. Lamentablemente, acababa de crear una rutina para componer un Área a partir de múltiples rectángulos finos, pero ahora he logrado reemplazar esas 20-30 líneas de código con: cachedPathBoundary = new BasicStroke (PATH_BOUNDARY_THICKNESS) .createStrokedShape (ruta); – Adamski

Cuestiones relacionadas