Java - 使绘画程序更清晰

时间:2015-01-24 17:56:31

标签: java swing graphics paint graphics2d

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

Line all messed up

关于如何使线看起来更清洁的任何想法?

代码:

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

    }
  }
}

这会使用缓冲图像。

1 个答案:

答案 0 :(得分:2)

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

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

在整个鼠标向下 ... 鼠标向上序列的持续时间内,您将获得更好的行为java.awt.geom.Path2D。然后连接序列中的每一行。