I have constructed a Path2D
that represents an unclosed shape consisting of straight lines:
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?
- Create a BasicStroke (the width controls your pixel-distance-tolerance)
- 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.
- 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.