Code doch nicht austauschbar in 2DGraphics

uuqfowehui23

Aktives Mitglied
Hi, gestern hat mir ein User gesagt, dass ich z. B. statt

eineAffineTransofrmation=AffineTransform.getScaleInstance(x,x) auch einfach eineAffineTransofrmation,scale(x,x) machen könne.

Wenn ich jedoch:
1643913052824.png hier statt atScale= AffineTransform.getScaleInstance(u,u);


einfach atScale.scale(u,u) mache erfüllt mein Programm nicht mehr die gleichen Funktionen wie, wenn ich das mit
atScale= AffineTransform.getScaleInstance(u,u); habe, mir wurde jedoch hier auch gestern bestätigt, dass man das austauschen könne und statt dem halt .scale nutzen kann??

Außerdem:
1643913120482.pngIch habe hier eine AffineTransform atGesamt,OBEN MACHE ICH SCHON atGesamt=new AffineTransform, also unabhängig von der Methode, bei dieser Methode, wollte ich noch zwei Affinetransformationen an atGesamt ranhängen, wenn ich nun nicht erneut atGesamt=new AffineTransform mache, sondern nur concatenate, habe ich das Problem,d ass mein Programm nicht tut, was es tun soll, also es geschieht was anderes, warum?

Woher weiß ich wann ich scale und wann dieses andere nutze? Woher weiß ich wann ich new AffineTransform amchen muss und wnan nicht?
 
Das, was dir da empfohlen wurde, war schon korrekt. Du scheinst aber vieles andere auch einfach nicht zu wissen bzw. tapst du von einem ins nächste Problem.
Wenn du einfach immer wieder nur .concatenate() auf derselben Instanz aufrust (ohne diese vorher zurückzusetzen), dann konkatenieren sich natürlich alle vorherigen concatenate() Aufrufe mit.
Deine Lösung ist hier, eine neue AffineTransform Instanz zu erzeugen.
Es gibt aber auch noch die Möglichkeit, setToIdentity() aufzurufen, um den Effekt der vorher (durch einen früheren Aufruf von updateTransform()) gemachten Konkatenationen wieder rückgängig zu machen.
 
Das, was dir da empfohlen wurde, war schon korrekt. Du scheinst aber vieles andere auch einfach nicht zu wissen bzw. tapst du von einem ins nächste Problem.
Wenn du einfach immer wieder nur .concatenate() auf derselben Instanz aufrust (ohne diese vorher zurückzusetzen), dann konkatenieren sich natürlich alle vorherigen concatenate() Aufrufe mit.
Deine Lösung ist hier, eine neue AffineTransform Instanz zu erzeugen.
Es gibt aber auch noch die Möglichkeit, setToIdentity() aufzurufen, um den Effekt der vorher (durch einen früheren Aufruf von updateTransform()) gemachten Konkatenationen wieder rückgängig zu machen.
Okay dank eund wie sieht es bezüglich getscaleinstance und scale aus?
 

Neue Themen


Zurück
Oben