Java - 让绘画程序更干净

Java - Making the painting program cleaner

我正在编写一个简单的绘图程序。问题是,当您将 setStroke(new BasicStroke(size)); 增加到一个很大的数字时,该行就会变得一团糟。我正在写入带有 2D 图形的缓冲图像。

关于如何使线条看起来更干净有什么想法吗?

代码:

    addMouseMotionListener(new MouseMotionAdapter(){
        public void mouseDragged(MouseEvent e){
            dot=false;


            if(graphics2D != null && paint.erase==false)
            {
                currentX = e.getX();
                currentY = e.getY();
                graphics2D.setStroke(new BasicStroke(size));
            graphics2D.drawLine(oldX, oldY, currentX, currentY);

            repaint();

    }
  }
}

这是在缓冲图像上绘制的。

这看起来像默认行上限的行为 CAP_SQUARE。尝试使用 BasicStroke(float width, int cap, int join) 构造函数:

new BasicStroke(
    size,
    BasicStroke.CAP_ROUND,
    BasicStroke.JOIN_ROUND
);

如果在整个鼠标按下...鼠标弹起期间使用java.awt.geom.Path2D,您会获得更好的表现 序列。然后连接序列中的每一行。