java实现动态图片效果
短信预约 -IT技能 免费直播动态提醒
本文实例为大家分享了java实现动态图片效果,供大家参考,具体内容如下
源码
package forGame;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
//动态效果
public class Demo_1 extends JFrame{
//背景
private BufferedImage bufferedImage;
//窗体大小
private int width;
private int height;
//要绘制的动态照片数组
private BufferedImage[] images = new BufferedImage[4];
//要绘制动态图中的那张
private BufferedImage image;
//初始化
{
if(bufferedImage == null){
try {
bufferedImage = ImageIO.read(new File("class="lazy" data-src\\image\\背景.png"));
for(int i = 1;i < images.length + 1;i ++)
images[i - 1] = ImageIO.read(new File("class="lazy" data-src\\image\\大飞机爆炸" + i + ".png"));
} catch (IOException e) {
e.printStackTrace();
}
}
width = bufferedImage.getWidth();
height = bufferedImage.getHeight();
image = images[0];
}
public Demo_1(){
super("动态测试");
//设置窗口
setSize(width,height);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
//启动线程
MyThread myThread = new MyThread();
myThread.start();
}
//双缓冲绘制解决图片闪烁问题
@Override
public void paint(Graphics g) {
Image image = this.createImage(width,height);
Graphics gImage = image.getGraphics();
gImage.setColor(gImage.getColor());
gImage.fillRect(0,0,width,height);
super.paint(gImage);
//绘制背景
gImage.drawImage(bufferedImage,0 ,0 ,null );
//绘制动态图片
gImage.drawImage(this.image,0 ,100 ,null );
//最后绘制缓冲后的图片
g.drawImage(image,0 ,0 , null);
}
private int num = 0;//images数组内图片索引
//线程内部类
private class MyThread extends Thread{
@Override
public void run() {
while(true) {
if(num <= 3) {
image = images[num ++];
}
else
num = 0;
repaint();
try {
sleep(100);//每隔100毫秒重绘一次
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
new Demo_1();
}
}
效果图
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341