Drehen Sie das Rechteck-Objekt in java
Ist es möglich, drehen Sie die Rectangle
Objekt bis zu einem gewissen Grad um seine Achse? Ist es so einfach wie Rectangle rect = new Rectangle(x,y,w,h,r)
?
Wenn es nicht möglich ist, um das Objekt zu drehen, was ein Weg wäre, könnte ich ähnliche Ergebnisse erhalten?
Edit: für Klarheit hier ist mein dilemma, ich habe Bilder, die sich drehen, aber wenn Sie colide mit anderen Bildern, die Kollisionen funktionieren nur bei 90 und 180 Grad-Drehungen, weil Ihre hit box-Rechteck-Objekte nicht drehen.
Nachschlagen verwenden von AffineTransform.
Brauche ich nicht, um visuell das Objekt drehen, die ich drehen müssen, die Hit-Box für das image und die hit-box ist ein Rechteck-Objekt
Dein Kommentar macht keinen Sinn. AffineTransforms zum drehen von Rechtecken.
lassen Sie mich versuchen, dies in code, bevor ich Rede.
Wie würde ich drehen das Rechteck? der folgende code verwendet Grafiken, während ich die eigentliche Rectangle-Objekt
Brauche ich nicht, um visuell das Objekt drehen, die ich drehen müssen, die Hit-Box für das image und die hit-box ist ein Rechteck-Objekt
Dein Kommentar macht keinen Sinn. AffineTransforms zum drehen von Rechtecken.
lassen Sie mich versuchen, dies in code, bevor ich Rede.
Wie würde ich drehen das Rechteck? der folgende code verwendet Grafiken, während ich die eigentliche Rectangle-Objekt
InformationsquelleAutor Chris | 2013-09-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie drehen Sie ein Form-Objekt abgeleitet, wie z.B. ein Rectangle2D mithilfe der AffineTransform-Methode,
createTransformedShape(...)
.Hinweis: code, der nicht kompiliert noch getestet.
createTransformedShape(new Rectangle(x,y,w,h))
? Ich bin nicht versuchen zu tun, alles visuelle mit meinen gedrehten Rechtecke und es scheint, wie alle diese Beispiel beinhalten visuelle UmgestaltungOk, sorry, dass ich nur assoziieren Rectangle2D mit Grafiken, nach dem Lesen der Dokumentation auf Formen, Rectangle2D, AffineTransform, und ein paar andere, die ich verstehe. Sorry für die Komplikation.
InformationsquelleAutor Hovercraft Full Of Eels
Drehen Sie das Rechteck, geben Sie den Grafik-Kontext ein
AffineTransform
für rotation. Hier ist ein Beispiel:Können Sie auch
g2d.rotate(radians)
für rotation.Beachten Sie, dass der Winkel muss im Bogenmaß angegeben werden. Konvertieren von Grad in Bogenmaß, benutzen
degrees * (Math.PI/180)
für den Winkel.Erwägen Sie die Verwendung
getTransform()
gemäß der AffineTransform-tutorial stattsetTransform
, und vergessen Sie nicht, re-das original verwandeln. Entweder das, oder machen Sie eine Kopie des Graphics-Objekts transformieren " und ziehen mit, und dann entsorgen Sie es.InformationsquelleAutor tbodt
Es gibt auch eine andere Möglichkeit, dies zu tun (neben
createTransformedShape
), die erzeugt weniger temporäre Objekte, wenn wünschenswert ist.Anstatt zu halten eine
Rectangle2D
für die bounding box, können Sie einPath2D
und führen Sie dann die Transformation inPath2D.transform(AffineTransform)
:Dies ist sehr ähnlich zu was
AffineTransform
tatsächlich unter der Haube.InformationsquelleAutor Radiodef