import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
import java.io.*;

public class MyDrawImage {
		
	public static void main (String[] args) {
		
		//Fenster erzeugen
		MyFrame frame = new MyFrame( "'Wie hieß noch dieser Student, Smithers?'", 500,400 ) {
			
			//Funktion zum Laden eines Bildes
			protected BufferedImage loadTheImage() 
			{
				BufferedImage img=null; //das Bild
				
				try {
					String dateiname=new String("../../../html/images/chap9/evil.jpg");
					FileInputStream in = new FileInputStream( dateiname ); //aus Stream laden
					JPEGImageDecoder decoder= JPEGCodec.createJPEGDecoder(in); //der Decoder
					img = decoder.decodeAsBufferedImage(); //laden
					in.close();
				}
				catch( Exception e )
				{System.out.print(e);}		
				
				return img; //geladenes Bild zurückgeben
			}
			
			public void paint(Graphics g) {
				
				//Upcast --> mehr Funktionen in Graphics2D
				Graphics2D g2d=(Graphics2D)g;
				//Antialiasing
				g2d.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON );
				
				//Bild laden
				BufferedImage img = loadTheImage();
				
				//Bild malen
				g2d.drawImage( img, null, 0,0 );
				
				//Affine Transformation
				AffineTransform atx = new AffineTransform();
				atx.scale(0.5,0.5);
				atx.translate(500,0);
				atx.rotate(Math.PI/8f);
				g2d.setTransform( atx );				
				
				//Transparenz
				g2d.setComposite( AlphaComposite.getInstance( AlphaComposite.SRC_OVER, 0.7f ) );
				
				//Bild erneut malen
				g2d.drawImage( img, null, 0,0 );
			}
		};
		
	}
}
