这个可是我的爱....无私的奉贤给你们这些看文章不回帖的家伙们!!!!!
效果图:
源码
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
![](/Images/OutliningIndicators/None.gif)
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JWindow;
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
public class Dissolver extends JComponent implements Runnable
{
JFrame frame;
JWindow fullscreen;
int count;
BufferedImage frame_buffer;
BufferedImage screen_buffer;
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public Dissolver()
{ }
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void run()
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
try
{
count = 0;
Thread.currentThread().sleep(100);
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
for(int i=0; i<10; i++)
{
count = i;
fullscreen.repaint();
Thread.currentThread().sleep(100);
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
} catch (InterruptedException ex)
{}
System.exit(1);
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void dissolveExit(JFrame frame)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
try
{
this.frame = frame;
Robot robot = new Robot();
Rectangle frame_rect = frame.getBounds();
frame_buffer = robot.createScreenCapture(frame_rect);
![](/Images/OutliningIndicators/InBlock.gif)
frame.setVisible(false);
![](/Images/OutliningIndicators/InBlock.gif)
Dimension screensize = Toolkit.getDefaultToolkit()
.getScreenSize();
Rectangle screen_rect = new Rectangle(0,0,
screensize.width, screensize.height);
screen_buffer = robot.createScreenCapture(screen_rect);
![](/Images/OutliningIndicators/InBlock.gif)
fullscreen = new JWindow(new JFrame());
fullscreen.setSize(screensize);
fullscreen.add(this);
this.setSize(screensize);
fullscreen.setVisible(true);
![](/Images/OutliningIndicators/InBlock.gif)
fullscreen.repaint();
new Thread(this).start();
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
} catch (Exception ex)
{
System.out.println(ex);
ex.printStackTrace();
}
}
![](/Images/OutliningIndicators/InBlock.gif)
}
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
class SpinDissolver extends Dissolver
{
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
![](/Images/OutliningIndicators/InBlock.gif)
g.drawImage(screen_buffer,-fullscreen.getX(),
fullscreen.getY(),null);
AffineTransform old_trans = g2.getTransform();
![](/Images/OutliningIndicators/InBlock.gif)
// 移动到框架的上面-左手边角落
g2.translate(frame.getX(), frame.getY());
![](/Images/OutliningIndicators/InBlock.gif)
// 向左边将框架移出
g2.translate(0,
+(count+1) * (frame.getX()+frame.getWidth())/20);
![](/Images/OutliningIndicators/InBlock.gif)
// 收缩 frame
float scale = 1f / ((float)count+1);
g2.scale(scale,scale);
![](/Images/OutliningIndicators/InBlock.gif)
// 中心的周围
g2.rotate(((float)count)/3.14/1.3,
frame.getWidth()/2, frame.getHeight()/2);
g2.drawImage(frame_buffer,0,0,null);
g2.setTransform(old_trans);
}
}
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
下来没用一个类来实现他...
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
![](/Images/OutliningIndicators/None.gif)
import javax.swing.JButton;
import javax.swing.JFrame;
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
public class DissolveHack
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public static void main(String[] args)
{
![](/Images/OutliningIndicators/InBlock.gif)
final JFrame frame = new JFrame("Dissolve Hack");
frame.setLayout(new BorderLayout());
final JButton quit = new JButton("Quit");
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
quit.addActionListener(new ActionListener( )
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void actionPerformed(ActionEvent evt)
{
quit.setVisible(false);
}
});
![](/Images/OutliningIndicators/InBlock.gif)
frame.getContentPane().add(quit,BorderLayout.NORTH);
frame.getContentPane().add(new JButton("我转~"),BorderLayout.CENTER);
frame.getContentPane().add(new JButton("我转~"),BorderLayout.SOUTH);
frame.getContentPane().add(new JButton("我转~"),BorderLayout.EAST);
frame.getContentPane().add(new JButton("我转~"),BorderLayout.WEST);
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
frame.addWindowListener(new WindowListener()
{
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void windowActivated(WindowEvent arg0)
{
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void windowClosed(WindowEvent arg0)
{
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void windowClosing(WindowEvent arg0)
{
new SpinDissolver().dissolveExit(frame);
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void windowDeactivated(WindowEvent arg0)
{
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void windowDeiconified(WindowEvent arg0)
{
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void windowIconified(WindowEvent arg0)
{
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void windowOpened(WindowEvent arg0)
{
}
});
frame.pack( );
frame.setLocation(300,300);
frame.setSize(400,400);
frame.setVisible(true);
}
}
![](/Images/OutliningIndicators/None.gif)