前言:
情人节快到了,你可以试试看,怎么说呢,Java不适合做动画....感觉就像是
具体:
Java绘画坐标如下:,窗口大小1300*680
Java绘画路径如图所示:
演示动画:
代码:
tip:背景图片需要自己找一个
package ovewmq;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class ShowLove extends JPanel {
int x = 650;
int y = 340;
int width = 10;
JFrame jf;
int widthLove_L_1 = 200;
int widthLove_L_2 = 100;
int _V_1_X2 = 695;
int _V_1_Y2 = 200;
int _V_2_X2 = 870;
int _V_2_Y2 = 210;
int _E_1_Y = 210;
int widthLove_E_2 = 100;
int widthLove_E_3 = 100;
int widthLove_E_4 = 100;
int delay = 15;
boolean top = false;
boolean _L_1_TF = false;
boolean _L_2_TF = false;
boolean _O_TF = false;
boolean _V_1_TF = false;
boolean _V_2_TF = false;
boolean _E_1_TF = false;
boolean _E_2_TF = false;
boolean _E_3_TF = false;
boolean _E_4_TF = false;
public static void main(String[] args) {
new ShowLove();
}
public ShowLove() {
set();
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.red);
g.fillRoundRect(x, y, 10, 10, 10, 10);
// 控制横线出现
if (y >= 350) {
g.setColor(Color.darkGray);
g.fill3DRect(200, 660, width, 11, true);
}
// 绘画_L_1
if (top) {
g.setColor(new Color(216, 191, 216));
Graphics2D g2 = (Graphics2D) g; // g是Graphics对象
g2.setStroke(new BasicStroke(20.0f));
g2.drawLine(110, 210, 110, widthLove_L_1);
}
// 绘制_L_2
if (_L_1_TF) {
g.setColor(new Color(189, 183, 107));
g.fillRect(100, 500, widthLove_L_2, 20);
}
// 绘制_O_
if (_L_2_TF) {
g.setColor(new Color(230, 230, 250));
Graphics2D g2 = (Graphics2D) g; // g是Graphics对象
g2.setStroke(new BasicStroke(20.0f));
g2.drawOval(390, 210, 220, 320);// 400
}
// 绘制_V_1
if (_O_TF) {
g.setColor(new Color(123, 104, 238));
Graphics2D g2 = (Graphics2D) g; // g是Graphics对象
g2.setStroke(new BasicStroke(20.0f));
g2.drawLine(698, 210, _V_1_X2, _V_1_Y2);
}
// 绘制_V_2
if (_V_1_TF) {
g.setColor(new Color(138, 43, 226));
Graphics2D g2 = (Graphics2D) g; // g是Graphics对象
g2.setStroke(new BasicStroke(20.0f));
g2.drawLine(803, 510, _V_2_X2, _V_2_Y2);
g2.drawLine(870, 210, _V_2_X2, _V_2_Y2);
}
// 绘制_E_1
if (_V_2_TF) {
g.setColor(new Color(100, 149, 237));
Graphics2D g2 = (Graphics2D) g; // g是Graphics对象
g2.setStroke(new BasicStroke(20.0f));
g2.drawLine(1000, 210, 1000, _E_1_Y);
}
// 绘制_E_2
if (_E_1_TF) {
g.setColor(new Color(230, 230, 250));
g.fillRect(1000, 500, widthLove_E_2, 20);
}
// 绘制_E_3
if (_E_2_TF) {
g.setColor(new Color(244, 164, 96));
g.fillRect(1000, 200, widthLove_E_3, 20);
}
// 绘制_E_4
if (_E_3_TF) {
g.setColor(new Color(160, 82, 45));
g.fillRect(1000, 350, widthLove_E_4, 20);
}
}
// 绘画点
public void Dra() {
Thread thread = new Thread() {
@Override
public void run() {
while (y <= 660) {
y = y + 3;
if (y >= 350 && width <= 900) {// 出现横线
width += 10;
}
System.out.println(y);
repaint();
try {
Thread.sleep(16);
} catch (InterruptedException e) {
}
}
top = true;
_L_1();
}
};
thread.start();
}
// 绘画_L_1
public void _L_1() {
Thread thread = new Thread() {
@Override
public void run() {
while (widthLove_L_1 <= 490) {
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
}
widthLove_L_1 += 20;
repaint();
}
// _L_1绘制完成
_L_1_TF = true;
// 开始绘制_L_2
_L_2();
}
};
thread.start();
}
// 绘制_L_2
public void _L_2() {
Thread thread = new Thread() {
@Override
public void run() {
while (widthLove_L_2 <= 200) {
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
}
widthLove_L_2 += 20;
repaint();
}
// _L_1绘制完成
_L_2_TF = true;
// 开始绘制_L_2
_O_();
}
};
thread.start();
}
// 绘制_O_
public void _O_() {
repaint();
// _O_绘制完成
_O_TF = true;
// 开始绘制_V_1
_V_1();
}
// 绘制_V_1
public void _V_1() {
Thread thread = new Thread() {
@Override
public void run() {
while (_V_1_Y2 <= 500) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
}
_V_1_X2 += 3.1;// 3.2
_V_1_Y2 += 10;
repaint();
}
// _V_1绘制完成
_V_1_TF = true;
// 开始绘制_V_2
_V_2();
}
};
thread.start();
}
// 绘制_V_2
public void _V_2() {
Thread thread = new Thread() {
@Override
public void run() {
while (_V_2_Y2 <= 500) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
}
_V_2_X2 -= 3;
_V_2_Y2 += 10;
repaint();
}
// _V_2绘制完成
_V_2_TF = true;
// 开始绘制_E_1
_E_1();
}
};
thread.start();
}
// 绘制_E_1
public void _E_1() {
Thread thread = new Thread() {
@Override
public void run() {
while (_E_1_Y <= 500) {
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
}
_E_1_Y += 20;
repaint();
}
// _E_1绘制完成
_E_1_TF = true;
// 开始绘制_E_1
_E_2();
}
};
thread.start();
}
// 绘制_E_2
public void _E_2() {
Thread thread = new Thread() {
@Override
public void run() {
while (widthLove_E_2 <= 200) {
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
}
widthLove_E_2 += 20;
repaint();
}
// _E_2绘制完成
_E_2_TF = true;
// 开始绘制_E_3
_E_3();
}
};
thread.start();
}
// 绘制_E_3
public void _E_3() {
Thread thread = new Thread() {
@Override
public void run() {
while (widthLove_E_3 <= 200) {
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
}
widthLove_E_3 += 20;
repaint();
}
// _E_3绘制完成
_E_3_TF = true;
// 开始绘制_E_4
_E_4();
}
};
thread.start();
}
// 绘制_E_4
public void _E_4() {
Thread thread = new Thread() {
@Override
public void run() {
while (widthLove_E_4 <= 200) {
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
}
widthLove_E_4 += 20;
repaint();
}
// _E_4绘制完成
_E_4_TF = true;
// 开始绘制xxx
}
};
thread.start();
}
// 设置窗口
public void set() {
JLabel label;
label = new JLabel(new ImageIcon("C:\\Demon\\background.jpg"));// 设置背景图
jf = new JFrame();
/*
* 设置窗口属性
*/
jf.setSize(1300, 680);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jf.setContentPane(this);
// 设置位置居中
jf.setLocationRelativeTo(null);
/*
* 设置窗口背景
*/
label.setBounds(0, 0, jf.getWidth(), jf.getHeight());
jf.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
jf.setUndecorated(true);
// jf.setAlwaysOnTop(true); //窗口设置始终最前面
this.setOpaque(false);
Dra();
jf.setVisible(true);
}
}