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