当前位置:首页 > Java

java如何绘画

2026-03-20 09:15:43Java

Java 绘图基础

Java 提供了多种绘图方式,主要通过 java.awtjavax.swing 包实现。绘图通常在 JPanelJComponentpaintComponent(Graphics g) 方法中进行。

创建自定义绘图组件需继承 JPanel 并重写 paintComponent 方法:

import javax.swing.*;
import java.awt.*;

class MyPanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.RED);
        g.fillRect(50, 50, 100, 100);
    }
}

基本图形绘制

使用 Graphics 对象可以绘制基本图形:

  • 画线:drawLine(int x1, int y1, int x2, int y2)
  • 画矩形:drawRect(int x, int y, int width, int height)
  • 画圆/椭圆:drawOval(int x, int y, int width, int height)
  • 画文本:drawString(String str, int x, int y)

示例代码:

java如何绘画

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawLine(10, 10, 100, 100);
    g.drawRect(120, 10, 80, 50);
    g.drawOval(220, 10, 80, 50);
    g.drawString("Hello", 320, 50);
}

高级绘图(Graphics2D)

Graphics2DGraphics 的子类,提供更强大的功能:

  • 设置笔画粗细:setStroke(Stroke s)
  • 旋转/缩放:rotate(double theta), scale(double sx, double sy)
  • 抗锯齿:setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)

示例:

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;
    g2d.setStroke(new BasicStroke(5));
    g2d.setColor(Color.BLUE);
    g2d.drawRect(50, 50, 100, 100);
}

双缓冲技术

避免闪烁可使用双缓冲:

java如何绘画

class DoubleBufferedPanel extends JPanel {
    private BufferedImage buffer;

    public DoubleBufferedPanel() {
        buffer = new BufferedImage(400, 400, BufferedImage.TYPE_INT_ARGB);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics bufferGraphics = buffer.getGraphics();
        // 在缓冲图像上绘制
        bufferGraphics.setColor(Color.WHITE);
        bufferGraphics.fillRect(0, 0, 400, 400);
        bufferGraphics.setColor(Color.RED);
        bufferGraphics.fillOval(100, 100, 200, 200);
        // 将缓冲图像绘制到屏幕上
        g.drawImage(buffer, 0, 0, this);
    }
}

绘制图像文件

加载并绘制图像文件:

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    try {
        Image image = ImageIO.read(new File("image.png"));
        g.drawImage(image, 0, 0, this);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

动画实现

通过定时重绘实现动画效果:

class AnimationPanel extends JPanel {
    private int x = 0;

    public AnimationPanel() {
        Timer timer = new Timer(50, e -> {
            x = (x + 5) % getWidth();
            repaint();
        });
        timer.start();
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.fillOval(x, 50, 50, 50);
    }
}

坐标系变换

使用 Graphics2D 进行坐标变换:

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;
    g2d.translate(getWidth()/2, getHeight()/2);
    g2d.rotate(Math.PI/4);
    g2d.drawRect(-50, -50, 100, 100);
}

标签: java
分享给朋友:

相关文章

java如何使用

java如何使用

Java 基本使用方法 Java 是一种广泛使用的编程语言,适用于开发各种类型的应用程序。以下是 Java 的基本使用方法,包括环境配置、语法基础和常用操作。 安装 Java 开发环境 下载并安装…

java如何创建对象

java如何创建对象

创建对象的基本方法 在Java中,创建对象主要通过new关键字调用构造函数完成。基本语法为: ClassName objectName = new ClassName(); 例如创建String对象…

如何配置java环境变量

如何配置java环境变量

下载并安装JDK 从Oracle官网或OpenJDK项目下载适合操作系统的JDK安装包。运行安装程序,按照提示完成安装,默认路径通常为C:\Program Files\Java\jdk-版本号。 配…

java中如何获取当前时间

java中如何获取当前时间

获取当前时间的几种方法 使用 java.time 包(Java 8及以上推荐) import java.time.LocalDateTime; LocalDateTime currentTime =…

java程序如何打包

java程序如何打包

打包Java程序的方法 使用JAR打包 Java程序可以通过JAR(Java Archive)格式打包,这是一种常见的压缩格式,适用于包含多个类文件和资源的项目。以下是使用JAR打包的步骤: 确保项…

如何学java基础

如何学java基础

学习Java基础的方法 理解Java的基本概念 Java是一种面向对象的编程语言,掌握基础概念如类、对象、继承、多态和封装是必要的。熟悉Java的语法结构,包括变量、数据类型、运算符和控制语句。 安…