java如何画图
Java 画图基础方法
在 Java 中,可以通过 java.awt 和 javax.swing 包提供的类来实现图形绘制。以下是几种常见的画图方法。
使用 JFrame 和 JPanel 创建绘图窗口:
import javax.swing.*;
import java.awt.*;
public class DrawExample extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.drawLine(10, 10, 100, 100); // 画线
g.drawRect(50, 50, 80, 60); // 画矩形
g.fillOval(100, 100, 50, 50); // 填充椭圆
}
public static void main(String[] args) {
JFrame frame = new JFrame("绘图示例");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new DrawExample());
frame.setSize(300, 300);
frame.setVisible(true);
}
}
使用 Graphics2D 进行高级绘图
Graphics2D 是 Graphics 的子类,支持更复杂的绘图操作,如旋转、缩放和设置笔触样式:
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
// 设置抗锯齿
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// 绘制带笔触的矩形
g2d.setStroke(new BasicStroke(3));
g2d.drawRect(20, 20, 100, 80);
// 绘制渐变填充的圆形
GradientPaint gradient = new GradientPaint(70, 70, Color.BLUE, 150, 150, Color.GREEN);
g2d.setPaint(gradient);
g2d.fillOval(70, 70, 100, 100);
}
绘制自定义路径
通过 Path2D 可以绘制复杂的自定义形状:
Path2D.Double path = new Path2D.Double();
path.moveTo(50, 50); // 起点
path.lineTo(100, 150); // 直线
path.curveTo(120, 200, 150, 180, 200, 150); // 贝塞尔曲线
g2d.draw(path);
使用 BufferedImage 离屏绘图
在内存中创建图像并编辑后显示:
BufferedImage image = new BufferedImage(200, 200, BufferedImage.TYPE_INT_ARGB);
Graphics2D imgGraphics = image.createGraphics();
imgGraphics.setColor(Color.YELLOW);
imgGraphics.fillRect(0, 0, 200, 200);
imgGraphics.dispose();
// 在面板中显示图像
g.drawImage(image, 10, 10, null);
绘制文本
设置字体和颜色后绘制文本:
g.setFont(new Font("Arial", Font.BOLD, 16));
g.setColor(Color.BLACK);
g.drawString("Hello Java Graphics", 50, 50);
注意事项
- 绘图逻辑必须写在
paintComponent方法中,而非直接调用。 - 调用
super.paintComponent(g)清除之前绘制的内容。 - 对于动画或动态图形,使用
Timer控制重绘频率。 - 复杂图形建议使用
Shape接口的实现类(如Rectangle2D、Ellipse2D)。







