Canvas update() paint() Problem

Naja, deine Idee ist ja nicht schlecht, aber ich glaube ich kenne da einen doch etwas einfacheren Weg ^^

Mit Graphics2D hat man ein noch mächtigeres Werkzeug als mit dem normalen Graphics. Rotation ist damit z.B. kein Problem, die Methode rotate() hilft einem dabei ;)

Beispiel:
Java:
package tests.graphics.zeichnen;

import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class RotateTest extends JFrame {
	private static final long	serialVersionUID	= -3964681291270572680L;

	public RotateTest() {
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		getContentPane().add(new JPanel() {
			private static final long	serialVersionUID	= 3434582401591348666L;

			@Override
			public void paintComponent(Graphics g) {
				Graphics2D g2 = (Graphics2D)g;

				// Mit Kantenglättung gleich etwas schicker ;)
				g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
						RenderingHints.VALUE_ANTIALIAS_ON);

				// Das Ganze um 45° drehen und dann etwas zeichnen
				g2.rotate(Math.toRadians(45), 100, 100);
				g2.fillRect(50, 50, 100, 100);
			}
		}, BorderLayout.CENTER);

		
		
		setSize(500, 500);
		setLocationRelativeTo(null);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new RotateTest();
	}
}
 
Stimmt, aber effektiver und schneller ^^

EDIT:
Achso, bevor ich es vergesse ... Die Rotation erfolgt bei positiven Zahlen im Uhrzeigersinn. Wenn man die Rotation gegen den Uhrzeigersinn haben will (so wie es in der Schule meist dargestellt wird), dann muss man negative Zahlen verwenden. Und naja, je nachdem wo man den Drehpunkt festlegt, ist dieser eben auch zu finden, ansonsten halt die linke obere Ecke.
 
Zuletzt bearbeitet:
Zurück