⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dissolver.java

📁 具有淡出效果的窗口
💻 JAVA
字号:
import java.awt.AlphaComposite;
import java.awt.Composite;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.image.BufferedImage;

import javax.swing.JComponent;
import javax.swing.JFrame;


public class Dissolver extends JComponent implements Runnable {
	
	Frame frame;
	Window fullscreen;
	int count;
	BufferedImage frame_buffer;
	BufferedImage screen_buffer;
	
	public Dissolver(){}
	
	public void run() {
		// TODO Auto-generated method stub
		try{
			count = 0;
			Thread.currentThread().sleep(100);
			for(int i=0;i<40;i++){
				count = i;
				fullscreen.repaint();
				Thread.currentThread().sleep(100);
			}
		}catch(InterruptedException ex){}
			
		System.exit(0);
	}
	
	public void dissolverExit(JFrame frame){
		try{
			this.frame = frame;
			Robot robot = new Robot();
			
			//cap screen w/ frame to  frame buffer
			Rectangle frame_rect = frame.getBounds();
			frame_buffer = robot.createScreenCapture(frame_rect);
			
			//hide frame
			frame.setVisible(false);
			
			//cap screen w/o frame
			Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
			Rectangle screen_rect = new Rectangle(0,0,screensize.width,screensize.height);
			screen_buffer = robot.createScreenCapture(screen_rect);
			
			//create big window w/o decorations
			fullscreen = new Window(new JFrame());
			fullscreen.setSize(screensize);
			fullscreen.add(this);
			this.setSize(screensize);
			fullscreen.setVisible(true);
			
			//start animation
			new Thread(this).start();
			
		}catch(Exception ex){
			System.out.println(ex);
			ex.printStackTrace();
		}
	}
	
	public void paint(Graphics g){
		
		Graphics2D g2 = (Graphics2D)g;
		
		//draw the screen, offset in case the window isn't at 0,0
		g.drawImage(screen_buffer,-fullscreen.getX(),-fullscreen.getY(),null);
		
		//draw the frame
		Composite old_comp = g2.getComposite();
		Composite fade = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1.0f-((float)count)/40f);
		g2.setComposite(fade);
		g2.drawImage(frame_buffer, frame.getX(), frame.getY(), null);
		g2.setComposite(old_comp);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -