import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.RescaleOp;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Window extends Applet implements Runnable
{
/**
*
*/
private static final long serialVersionUID = -8255319694373975038L;
private static final float MAX_TRANS = 3;
private static final float MIN_TRANS = -.5f;
private PictureGenerator myImageGenerator;
private Image myImage;
private Thread myThread;
private BufferedImage bi;
float[] scales = { 1f, 1f, 1f, 0.5f };
float[] offsets = new float[4];
RescaleOp rop;
private float trans;
private Image dbImage;
private Graphics dbg;
public void init()
{
this.setSize(400, 300);
setBackground(Color.WHITE);
trans = MAX_TRANS;
this.setupImage();
this.start();
}
public void start(){
myThread = new Thread(this);
myThread.start();
}
public void stop()
{
myThread = null;
}
public void run()
{
while(true)
{
try {
myThread.sleep(10);
if(trans <= MIN_TRANS)
{
trans = MAX_TRANS;
}
trans -= .005;
setOpacity(trans);
this.repaint();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private void setupImage()
{
try {
BufferedImage img = ImageIO.read(new File("images.jpeg"));
int w = img.getWidth(null);
int h = img.getHeight(null);
bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
Graphics g = bi.getGraphics();
g.drawImage(img, 0, 0, null);
} catch (IOException e) {
System.out.println("Image could not be read");
System.exit(1);
}
setOpacity(trans);
}
private void setOpacity(float opacity) {
scales[3] = opacity;
rop = new RescaleOp(scales, offsets, null);
}
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D)g;
g2d.drawImage(bi, rop, 0, 0);
}
public void update(Graphics g)
{
if (dbImage == null)
{
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
}
// clear screen in background
dbg.setColor (getBackground ());
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
// draw elements in background
dbg.setColor (getForeground());
paint (dbg);
// draw image on the screen
g.drawImage (dbImage, 0, 0, this);
}
}