在JPanel上绘制Path2D时,我有一个奇怪的行为。

在此屏幕截图中可以看到,有些形状有点像尾巴:



当我将类型更改为Line2D.Double时,正如我期望的那样:



这是绘制路径/线条的代码:

Path2D.Double path = new Path2D.Double();
Graphics2D g = (Graphics2D)this.getGraphics();
for(int i=0; i<geom.size(); i++)
{
    double x = ddGeom.getX(geom.get(i));
    double y = ddGeom.getY(geom.get(i));
    if(i==0)
        path.moveTo(x-draw_center.x, y-draw_center.y);
    path.lineTo(x-draw_center.x, y-draw_center.y);
}
g.draw(path);




您是否知道Screenshot1中的“尾巴”来自何处?我使用SDK版本6。

非常感谢您的帮助


编辑:将代码段更改为

if(i==0)
     path.moveTo(x-draw_center.x, y-draw_center.y);
else
     path.lineTo(x-draw_center.x, y-draw_center.y);


大部分(也许75%)的尾巴消失了。知道为什么会这样吗?

最佳答案

我终于明白了。多亏了HovercraftFullOfEels提示“奇怪的中风”,我才用自己的笔触进行游戏。
原始笔画:

BasicStroke stroke = new BasicStroke(2.0f);


变成:

BasicStroke stroke = new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL);


随着新的中风,所有的“尾巴”消失了。我仍然不明白为什么会发生这种情况,但是如果有人遇到相同的问题,此解决方法可能会有所帮助。

我仍然会对这种行为的解释非常感兴趣。

谢谢您的大力帮助

关于java - JPanel上的Java Path2D.Double涂有“尾部”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12418024/

10-10 23:16