帮我写一个java的paint模拟毛笔代码
时间: 2024-05-15 20:16:04 浏览: 52
以下是一个简单的Java Paint模拟毛笔代码示例:
```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PaintApp extends JFrame {
private int lastX, lastY;
private JButton clearBtn;
private JPanel canvas;
private Graphics2D g2;
public PaintApp() {
// 设置窗口标题
super("Java Paint App");
// 初始化画布
canvas = new JPanel();
canvas.setBackground(Color.WHITE);
canvas.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
// 获取鼠标点击的位置
lastX = e.getX();
lastY = e.getY();
}
});
canvas.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
// 获取鼠标拖拽的位置
int x = e.getX();
int y = e.getY();
// 绘制毛笔效果
g2.drawLine(lastX, lastY, x, y);
repaint();
// 更新上一个点的位置
lastX = x;
lastY = y;
}
});
// 初始化清除按钮
clearBtn = new JButton("Clear");
clearBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
g2.setPaint(Color.WHITE);
g2.fillRect(0, 0, canvas.getWidth(), canvas.getHeight());
g2.setPaint(Color.BLACK);
repaint();
}
});
// 添加组件到窗口中
Container content = getContentPane();
content.setLayout(new BorderLayout());
content.add(canvas, BorderLayout.CENTER);
content.add(clearBtn, BorderLayout.SOUTH);
// 初始化画笔
g2 = (Graphics2D) canvas.getGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setStroke(new BasicStroke(5));
g2.setPaint(Color.BLACK);
// 设置窗口大小和可见性
setSize(400, 400);
setVisible(true);
}
public static void main(String[] args) {
new PaintApp();
}
}
```
该代码创建了一个简单的Java Paint应用程序,支持使用毛笔效果绘制图形。当用户点击鼠标时,程序会记录下鼠标的位置,当用户拖拽鼠标时,程序会使用Graphics2D.drawLine()方法绘制一条线段,并更新上一个点的位置。用户可以使用清除按钮清除画布上的所有内容。该代码使用了Java Swing库中的一些组件,包括JFrame、JPanel和JButton等。
阅读全文