Swing:检测一般路径上的鼠标移动

时间:2011-02-09 15:25:03

标签: java swing spline

我正在使用GeneralPath绘制一些样条线,如下所示:

GeneralPath path = new GeneralPath();
path.moveTo(x0, y0);
path.curveTo(x0 + 100, y0, x1 - 100, y1, x1, y1);
((Graphics2D) g).draw(path);

基本上,这会在点(x0; y0)和点(x1; y1)之间绘制看起来像电缆或电线的样条线。

p0 --
     \
      \
       `-- p1

绘图没问题,但现在我想检测鼠标何时移动悬停此样条曲线。问题是contains(Point)方法似乎没有做我想要的。如果true位于样条曲线与(x0; y0)和(x1; y1)之间的直线之间的区域内,则返回Point

在上面的示例中,对于整个“星星”区域,它将返回true:

p0 -----------
     *********\
         ******\
             ***\
                *\* 
                  \******* 
                   `------------- p1

但只想检测点何时正好位于样条曲线上。

有没有办法达到我想要的目的?

任何想法都非常感谢!

编辑: 我在文档中找到了我的问题的解释,但这并没有帮助我找到解决方案:

  

包含和交叉方法   考虑Shape的内部   它所包围的区域就像它一样   填充。这意味着这些方法   考虑未封闭的形状   隐含地为了目的而关闭   确定形状是否包含或   相交矩形或形状   包含一个观点。

1 个答案:

答案 0 :(得分:1)

做一个曲线回到起点。但是,对于用户来说,确实完全在你的曲线上是非常非常困难的!