Mouse pointer detection over a Path2D

2019-04-07 22:34发布

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?

1条回答
成全新的幸福
2楼-- · 2019-04-07 23:22
  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.

查看更多
登录 后发表回答