Java - 使绘画程序更干净

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

    }
  }
}

这会绘制缓冲图像。

最佳答案

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

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

使用 java.awt.geom.Path2D 会获得更好的行为整个鼠标按下...鼠标向上序列的持续时间。然后将序列中的每一行连接起来。

关于Java - 使绘画程序更干净,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28128476/

相关文章:

Java 多次按钮单击

math - 多边形数学

python - 生成 3D 验证码 [图片]

java - 程序声明交易关闭后我无法进行操作

java - 比较并打印

java - Spring Integration 和 RabbitMQ,如何避免对入站 channel 适配器进行轮询

java - 为什么我对 ActionListener 的更改没有立即生效?

java - 如何阻止另一个类中的 JComponent?

c++ - FreeGlut OpenGL 上下文版本

java - 如何将java对象传递给mysql存储过程