【问题标题】:Java basic paint program ugly brushJava基础绘画程序丑刷
【发布时间】:2015-09-01 11:56:29
【问题描述】:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class Circle extends JPanel {
private final ArrayList<Point> point = new ArrayList<>();

public Circle() {
    addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent event) {
            point.add(event.getPoint());
            repaint();
        }
    });

    addMouseMotionListener(new MouseMotionAdapter() {
        public void mouseDragged(MouseEvent event) {
            point.add(event.getPoint());
            repaint();
        }
    });
}

public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.setColor(new Color(0, 0, 128));
    for (Point p : point)
        g.fillOval(p.x, p.y, 15, 15);
}

public static void main(String[] args) {
    JFrame f = new JFrame();
    f.add(new Circle());
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setSize(800, 600);
    f.setVisible(true);
}
}

这里是示例程序。

绘制它显示丑陋的差距:

我看了很多关于 java paint 的教程,但每次他们的解释都像上面的示例程序。 Java如何制作出像微软Paint一样的平滑笔刷样式?

【问题讨论】:

    标签: java swing paintcomponent


    【解决方案1】:

    您需要在点之间画线,而不是在每个点上画椭圆。这是一个稍微修改的paintComponent 方法:

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.setColor(new Color(0, 0, 128));
        g2.setStroke(new BasicStroke(15f,
                                     BasicStroke.CAP_ROUND,
                                     BasicStroke.JOIN_ROUND));
        for (int i = 1; i < point.size(); i++)
            g2.draw(new Line2D.Float(point.get(i-1), point.get(i)));
    }
    

    结果:

    【讨论】:

      【解决方案2】:

      你的代码画了很多单点,所以如果你快速移动鼠标,就会有间隙。在绘制实心椭圆的那一点上,您必须添加一些东西来连接当前点和前一个点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-24
        • 1970-01-01
        相关资源
        最近更新 更多