/**
* @date 2022/3/27 - 22:54
*/
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
/**
* 电子相册
* 需求:制作电子相册,图片进行淡入,进行切换
* 思路:
* 1.先有框架
* 2.有面板来承接图片
* 3.有进行切换的图片组
* 4.获取到图片之后显示到面板中
* 5.根据改变图片的透明度实现淡入的效果
*
* */
public class EImage extends JPanel{
//用来显示画的图片
BufferedImage bgImage;
public static void main(String[] args) {
//先创建框架
JFrame imageJrame = new JFrame();
//设置框架大小
imageJrame.setSize(300,600);
//设置框架标题
imageJrame.setTitle("电子相册");
//设置框架居中显示
imageJrame.setLocationRelativeTo(null);
imageJrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//创建面板,用来承接图片,将面板添加到框架中
EImage image = new EImage();
imageJrame.add(image);
//初始化图片
image.initImage();
//显示到面板中
image.begin();
//进行显示框架
imageJrame.setVisible(true);
}
int num = 0;
Float ff = 0.0f;
//另外开启一个线程来改变ff的值,透明度
private void begin() {
new Thread(new Runnable() {
@Override
public void run() {
// 切换效果
while(true){
bgImage=images[num];
num++;
if(num == 4){
num = 0;
}
//淡出效果
while(true){
if(ff!=100){
ff=ff+20;
repaint();
}else{
ff =0.0f;
break;
}
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}).start();
}
//将图片画到面板中
@Override
public void paint(Graphics g) {
super.paint(g);
if(bgImage!=null){
Graphics2D graphics2D = (Graphics2D) g;
//设置图片透明度:淡出效果
graphics2D.setComposite(AlphaComposite.SrcOver.derive(ff/100f));
graphics2D.drawImage(bgImage,0,0,bgImage.getWidth(),bgImage.getHeight(),null);
}
}
BufferedImage[] images = new BufferedImage[5];
//获取图片。并将图片存入到数组中
private void initImage() {
//获取5张图片。读取
for (int i = 1; i <=5 ; i++) {
try {
BufferedImage myImage = ImageIO.read(new File("src/images/bg"+i+".png"));
images[i-1]=myImage;
} catch (IOException e) {
e.printStackTrace();
}
}
//设置画板图片
bgImage = images[0];
}
}
JAVA实现电子相册
最新推荐文章于 2022-09-01 11:39:55 发布
1122

被折叠的 条评论
为什么被折叠?



