JPanel 上的 Java Path2D.Double 都画有 'tail'

标签 java drawing jpanel java-2d path-2d

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


正如您在屏幕截图中看到的那样,某些形状有点像尾部:

enter image description here

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

enter image description here

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

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);

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

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

感谢您的大力帮助

关于JPanel 上的 Java Path2D.Double 都画有 'tail',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12418024/

相关文章:

java - PL/SQL 中的嵌套类(对象类型)

java - 单击 JButton 时如何更新它的文本?

php - 在 PDF 文件中绘图

ios - 如何改善糟糕的 drawRect 性能?

wpf - 在 WPF 中将线条集合绑定(bind)到 Canvas

java - 我可以切换 JPanel 数组中 JPanel 的位置吗?

Java,更改从同一面板声明创建的 4 个面板之一上的标签文本

java - Logback 和 Spring Boot 的新 springProperty 查找机制不起作用

java - 通过应用程序显示 ProgressDialogs 的最佳实践?

java - 将 JPanel 替换为具有更新内容的相同内容