import java.awt.Canvas; import java.awt.Frame; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Color; import java.awt.image.BufferedImage; public class ImageTest extends Canvas { public static void main(String[] args) { Frame frame = new Frame("Image testing"); ImageTest instance = new ImageTest(); frame.add(instance); frame.pack(); frame.setVisible(true); } public Dimension getPreferredSize() { return new Dimension(256, 256); } BufferedImage backgroundImage; BufferedImage alphaImage; void initImage() { backgroundImage = (BufferedImage) createImage(256, 256); alphaImage = new BufferedImage(64, 64, BufferedImage.TYPE_INT_ARGB); for (int x=0; x<256; x++) for (int y=0; y<256; y++) { int v = (int) (Math.sin(x/5F)*63+ (Math.cos(y/5F))*63 +128); int vv = (x<<16) | (y<<8) | v; backgroundImage.setRGB(x, y, vv); } for (int x=0; x<64; x++) for (int y=0; y<64; y++) { int a = Math.abs(y*8-255); int r = x*4; int g = y*4; int b = 255 - (x+y)*2; int vv = (a<<24) | (r<<16) | (g<<8) | b; alphaImage.setRGB(x, y, vv); } } public void paint(Graphics gfx) { if (backgroundImage == null) initImage(); gfx.drawImage(backgroundImage, 0, 0, this); gfx.setColor(Color.white); gfx.drawLine(0, 0, 255, 255); gfx.setColor(Color.black); gfx.drawLine(5, 0, 255, 250); gfx.drawLine(0, 5, 250, 255); gfx.setColor(Color.blue); gfx.drawLine(10, 0, 255, 245); gfx.setColor(Color.yellow); gfx.drawLine(20, 0, 255, 235); gfx.setColor(Color.red); gfx.drawLine(0, 10, 245, 255); gfx.setColor(Color.green); gfx.drawLine(0, 20, 235, 255); gfx.drawImage(alphaImage, 56, 56, this); gfx.drawImage(alphaImage, 76, 76, this); gfx.drawImage(alphaImage, 96, 96, this); gfx.drawImage(alphaImage, 116, 116, this); gfx.drawImage(alphaImage, 136, 136, this); } }