[英]Swing: detect mouse move on generalpath
我正在使用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)
方法似乎无法满足我的要求。 如果Point
在样条线与(x0; y0)和(x1; y1)之间的直线之间的区域内,则返回true
。
在上面的示例中,它将对整个“星星”区域返回true:
p0 -----------
*********\
******\
***\
*\*
\*******
`------------- p1
但是只想检测何时该点正好位于样条线上。
有什么办法可以实现我想要的?
任何想法,不胜感激!
编辑:我在文档中找到了我的问题的解释,但这并不能帮助我找到解决方案:
包含和相交方法将Shape的内部视为其被包围的区域,就好像它被填充一样。 这意味着这些方法将未闭合的形状视为隐式闭合,以便确定形状是否包含或与矩形相交或形状是否包含点。
只要做一条曲线就可以回到起点。 但这对于用户来说,要完全超越您的曲线将非常非常困难!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.