Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mouse pointer detection over a Path2D

I have constructed a Path2D that represents an unclosed shape consisting of straight lines:

enter image description here

I want to be able to detect when the mouse is clicked and the mouse pointer is near to (within a few pixels of) the path. Using the contains method does not work because the algorithm treats the unclosed shape as implicitly closed (i.e. by drawing a straight line between the start and end points).

Does anyone know of another mechanism for achieving this?

like image 757
Adamski Avatar asked Aug 22 '12 08:08

Adamski


1 Answers

  1. Create a BasicStroke (the width controls your pixel-distance-tolerance)
  2. Don't draw with it, only use its createStrokedShape method to create a second shape from your shape. This second shape describes the outline of the shape that would be filled if you would draw your first shape with the BasicStroke.
  3. Use the contains method of this second shape

From Stroke.createStrokedShape API documentation:

Returns an outline Shape which encloses the area that should be painted when the Shape is stroked according to the rules defined by the object implementing the Stroke interface.

like image 199
lbalazscs Avatar answered Sep 22 '22 09:09

lbalazscs