Java dreht das Rechteck um die Mitte
-
26-10-2019 - |
Frage
Ich möchte ein Rechteck um seinen Mittelpunkt drehen und es sollte an der Stelle bleiben, an der es gezeichnet werden soll, und in diesem Raum rotieren
das ist mein Code:
AffineTransform transform = new AffineTransform();
transform.rotate(Math.toRadians(45),rectangle.width/2, rectangle.height/2);
Shape transformed = transform.createTransformedShape(rectangle);
g2.fill(transformed)
Das Rechteck ist gedreht, wird aber an einer anderen Stelle des Bildschirms gezeichnet. Wie kann ich das korrigieren?
Lösung
Ich habe das noch nicht ausprobiert, aber es sieht so aus, als ob Sie nicht die richtige Mitte des Rechtecks erhalten.Versuchen:
AffineTransform transform = new AffineTransform();
transform.rotate(Math.toRadians(45), rectangle.getX() + rectangle.width/2, rectangle.getY() + rectangle.height/2);
g2.fill(transformed);
Der Unterschied besteht darin, dass Sie jetzt die Breite zum Start-X-Punkt und die Höhe zum Start-Y-Punkt addieren, also die Mitte des Rechtecks.
Hoffe das hilft.
Andere Tipps
AffineTransform transform = new AffineTransform();
transform.rotate(theta, rect.getX() + rect.width/2, rect.getY() + rect.height/2);
AffineTransform old = g2.getTransform();
g2.transform(transform);
// draw your rectangle here...
g2.setTransfrom(old);
Wenn Sie es so tun, ist es möglich, ein fortschrittlicheres Rechteck zu zeichnen. Zum Beispiel mit einer Gradientenfüllung oder einem Text im Rechteck. Alles wird damit drehen.