import javax.swing.*;
import java.awt.*;
import java.awt.geom.Path2D;
public class HeartAnimation extends JPanel implements Runnable {
private double angle = 0;
public HeartAnimation() {
setBackground(Color.BLACK);
new Thread(this).start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
int width = getWidth();
int height = getHeight();
int size = Math.min(width, height) / 2;
int xCenter = width / 2;
int yCenter = height / 2;
// Create a gradient for the heart
GradientPaint gradient = new GradientPaint(
0, 0, Color.PINK,
width, height, Color.MAGENTA, true
);
g2d.setPaint(gradient);
// Draw the heart shape
Path2D.Double heart = new Path2D.Double();
heart.moveTo(xCenter, yCenter - size / 3);
heart.curveTo(xCenter + size / 2, yCenter - size, xCenter + size * 1.5, yCenter + size / 3, xCenter, yCenter + size);
heart.curveTo(xCenter - size * 1.5, yCenter + size / 3, xCenter - size / 2, yCenter - size, xCenter, yCenter - size / 3);
g2d.fill(heart);
// Rotate the heart
g2d.translate(xCenter, yCenter);
g2d.rotate(angle);
g2d.translate(-xCenter, -yCenter);
}
@Override
public void run() {
while (true) {
angle += Math.PI / 180; // Rotate by 1 degree
repaint();
try {
Thread.sleep(20); // Control the speed of the animation
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Heart Animation");
HeartAnimation heartAnimation = new HeartAnimation();
frame.add(heartAnimation);
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: