Verständnisproblem GeneralPath/AffineTransform

Status
Nicht offen für weitere Antworten.

heine789

Neues Mitglied
Hallo zusammen!

Habe eine Frage bezüglich folgendem code. Von wo weiss das AffineTransform Objekt das die Operationen setToRotation(...) u. setToTranslation(...) auf das GeneralPath Objekt ausgeführt werden sollen???

Vielen Dank

Hier der code...

Code:
// Datei Example02.java

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;

public class Example02 extends Frame {
	public static void main( String[] args ) {
		new Example02();
	}
	
	public Example02() {
		
		super( "Java 2D Example02, Shapes and Transforms" );
		setSize( 400, 300 );
		setVisible( true );
		
		addWindowListener(
				new WindowAdapter() {
					public void windowClosing( WindowEvent ev ) {
						dispose();
						System.exit( 0 );
					}
				}
		);
	}
	
	
	public void paint( Graphics g ) {
		
		g.setColor( Color.red );
		g.drawRect( 50, 50, 200, 200 );
		
		Graphics2D g2d = ( Graphics2D ) g;
		g2d.setColor( Color.blue );
		g2d.drawRect( 75, 75, 300, 200);
		
		
		GeneralPath path = new GeneralPath(
				GeneralPath.WIND_EVEN_ODD );
		path.moveTo( 0.0f, 0.0f );
		path.lineTo( 0.0f, 125.0f );
		path.lineTo( 225.0f, 125.0f );
		path.lineTo( 225.0f, 0.0f );
		path.closePath();
		
		AffineTransform at = new AffineTransform();
		at.setToRotation( -Math.PI / 8.0 );
		g2d.transform( at );
		at.setToTranslation( 50.0f, 200.0f );
		g2d.transform( at );
		
		g2d.setColor( Color.green );
		g2d.fill( path );
	}
}
 

Kerberus

Bekanntes Mitglied
Weiss es nicht. Das AffineTranform-Objekt dreht das ganze Koordinaten System. Das heisst, wenn du nur dein GeneralPath drehen willst, musst du zuerst die Roationt anwenden, dann den Path zeichnen und dann wieder zurück drehen, denn sonst werden alle anderen Objekte, die du zeichnen willst, auch gedreht erscheinen.
 
Status
Nicht offen für weitere Antworten.

Oben