Fade in and Fade out

Hi,

I want to create an image animation.

Any idea how can I create fade in and fade out effect?

[114 byte] By [student@sunDNa] at [2007-11-27 10:26:55]
# 1

import java.awt.*;

import java.awt.geom.*;

import java.awt.image.BufferedImage;

import javax.swing.*;

public class ImageFader extends JPanel implements Runnable {

BufferedImage top;

BufferedImage bottom;

float alpha = 1f;

public ImageFader() {

createImages();

}

protected void paintComponent(Graphics g) {

super.paintComponent(g);

Graphics2D g2 = (Graphics2D)g;

int rule = AlphaComposite.SRC_OVER;

AlphaComposite ac = AlphaComposite.getInstance(rule, alpha);

g2.setComposite(ac);

g2.drawImage(bottom, 0, 0, this);

ac = AlphaComposite.getInstance(rule, 1.0f - alpha);

g2.setComposite(ac);

g2.drawImage(top, 0, 0, this);

}

public Dimension getPreferredSize() {

return new Dimension(240, 200);

}

public void run() {

boolean increasing = false;

float alphaInc = 0.01f;

boolean running = true;

while(running) {

try {

Thread.sleep(40);

} catch(InterruptedException e) {

running = false;

break;

}

if(increasing) {

if(alpha + alphaInc > 1.0f)

increasing = false;

else

alpha += alphaInc;

}

if(!increasing) {

if(alpha - alphaInc < 0)

increasing = true;

else

alpha -= alphaInc;

}

repaint();

}

}

private void createImages() {

Dimension d = getPreferredSize();

int w = d.width;

int h = d.height;

int type = BufferedImage.TYPE_INT_RGB;

top = new BufferedImage(w, h, type);

Graphics2D g2 = top.createGraphics();

g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

g2.setBackground(Color.blue);

g2.clearRect(0,0,w,h);

g2.setPaint(Color.orange);

g2.fill(new Ellipse2D.Double(w/16, h/16, w*7/8, h*7/8));

g2.dispose();

bottom = new BufferedImage(w, h, type);

g2 = bottom.createGraphics();

g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

g2.setBackground(Color.red);

g2.clearRect(0,0,w,h);

g2.setPaint(Color.green.darker());

g2.fill(new Rectangle2D.Double(w/12, h/12, w*5/6, h*5/6));

g2.dispose();

}

private void start() {

Thread thread = new Thread(this);

thread.setPriority(Thread.NORM_PRIORITY);

thread.start();

}

public static void main(String[] args) {

ImageFader test = new ImageFader();

JFrame f = new JFrame();

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.getContentPane().add(test);

f.pack();

f.setLocationRelativeTo(null);

f.setVisible(true);

test.start();

}

}

crwooda at 2007-7-28 17:42:21 > top of Java-index,Security,Cryptography...
# 2

Thanx a lot crwood.

student@sunDNa at 2007-7-28 17:42:21 > top of Java-index,Security,Cryptography...