Re: Display Image on Top of Another
DavidBrown314@gmail.com wrote:
I want to be able to display a background image and be able to display
other images (with transparent parts) over it and be able to
reposition them. Is this possible? If so, how?
Hunter pointed you in the right direction. Here is an example of how to
do it. If there isn't any action in the paddock try substituting your
own pictures.
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.net.*;
import javax.imageio.*;
import javax.swing.*;
public class Fader extends JPanel implements Runnable {
final BufferedImage[] images = new BufferedImage[6];
volatile BufferedImage first,next;
volatile AlphaComposite comp1 =
AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1.0f);
volatile AlphaComposite comp2 =
AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.0f);
public Fader() {
try {
for (int i=0; i<images.length; i++)
images[i] = ImageIO.read(
// new File(Integer.toString(i+1) + "0_min_ago.jpg"));
new URL("http://www.thealpacastore.com/alpacacam/" +
Integer.toString(i+1) + "0_min_ago.jpg"));
} catch (IOException ioe) {
ioe.printStackTrace();
}
setPreferredSize(new Dimension(
images[0].getWidth(),images[0].getHeight()));
}
public void run() {
while (true) {
for (int i=0; i<images.length; i++) {
first = images[i];
if (i < images.length - 1)
next = images[i+1];
else
next = images[0];
for (int j=0; j<60; j++) {
comp1 = AlphaComposite.getInstance(
AlphaComposite.SRC_OVER,1.0f / (j + 1));
comp2 = AlphaComposite.getInstance(
AlphaComposite.SRC_OVER,(j + 1) / 60.0f);
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException ie) { }
}
try {
Thread.sleep(1000);
} catch (InterruptedException ie) { }
}
}
}
public void paintComponent(Graphics g2D) {
Graphics2D g = (Graphics2D)g2D;
g.setComposite(comp1);
g.drawImage(first,0,0,null);
g.setComposite(comp2);
g.drawImage(next,0,0,null);
}
public static void main(String[] args) {
Runnable r = new Runnable() {
public void run() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Fader fader = new Fader();
frame.add(fader);
frame.pack();
frame.setVisible(true);
new Thread(fader).start();
}
};
EventQueue.invokeLater(r);
}
}
--
Knute Johnson
email s/nospam/knute/