我正在编写一个简单的绘画程序。问题是,当您将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鼠标上移序列的持续时间内使用...会得到更好的行为。然后,将序列中的每一行连接起来。

10-05 18:22