java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java绘制爱心图案

使用Java绘制一个520爱心图案的示例代码

作者:招风的黑耳

520在中国网络文化中代表"我爱你",用代码绘制一个爱心图案是一种浪漫的表达方式,这篇文章小编就来和大家介绍一下如何使用Java绘制一个520爱心图案吧

一、实现原理

我们将使用数学方程来绘制爱心形状。爱心曲线的数学方程有多种,这里我们使用一种简单的心形参数方程:

其中θ是角度参数,范围在0到2π之间。

二、完整代码实现

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

public class HeartShape extends JFrame {

    public HeartShape() {
        setTitle("520爱心");
        setSize(800, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        add(new HeartPanel());
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            new HeartShape().setVisible(true);
        });
    }
}

class HeartPanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        
        // 设置抗锯齿
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        
        // 设置背景色
        setBackground(Color.BLACK);
        g2d.setColor(Color.RED);
        
        // 绘制爱心
        int width = getWidth();
        int height = getHeight();
        
        // 缩放和平移参数,使爱心居中显示
        double scale = Math.min(width, height) / 25.0;
        int translateX = width / 2;
        int translateY = height / 2;
        
        // 绘制爱心曲线
        int points = 1000;
        double[] xPoints = new double[points];
        double[] yPoints = new double[points];
        
        for (int i = 0; i < points; i++) {
            double t = 2 * Math.PI * i / points;
            // 心形参数方程
            double x = 16 * Math.pow(Math.sin(t), 3);
            double y = 13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t);
            
            xPoints[i] = x * scale + translateX;
            yPoints[i] = -y * scale + translateY; // 反转Y轴
        }
        
        // 填充爱心
        int[] xIntPoints = new int[points];
        int[] yIntPoints = new int[points];
        for (int i = 0; i < points; i++) {
            xIntPoints[i] = (int) xPoints[i];
            yIntPoints[i] = (int) yPoints[i];
        }
        
        // 使用多边形填充
        g2d.fillPolygon(xIntPoints, yIntPoints, points);
        
        // 添加"520"文字
        g2d.setColor(Color.WHITE);
        g2d.setFont(new Font("微软雅黑", Font.BOLD, 48));
        String text = "520";
        FontMetrics fm = g2d.getFontMetrics();
        int textWidth = fm.stringWidth(text);
        int textHeight = fm.getHeight();
        
        g2d.drawString(text, translateX - textWidth / 2, translateY + textHeight / 2);
    }
}

三、代码解析

1.HeartShape类:继承自JFrame,是程序的主窗口。

2.HeartPanel类:继承自JPanel,负责绘制爱心图形。

四、运行效果

运行程序后,你将看到一个黑色背景的窗口,中央有一个红色的爱心图案,爱心中央有白色的"520"字样。

五、扩展与改进

六、总结

通过这个教程,我们学习了如何使用Java绘制一个数学上的爱心图形,并在其中添加"520"文字。这种技术可以应用于各种图形界面程序中,如游戏、动画或浪漫的表白程序。

到此这篇关于使用Java绘制一个520爱心图案的示例代码的文章就介绍到这了,更多相关Java绘制爱心图案内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文