2017-12-30 46 views
0

Ich mache ein Spiel in JavaFx. Die Art und Weise Entitäten in meinem Spiel gemacht wird, ist abhängig von einem ihrer Felder „Winkel“ genannt, wie folgt aus:javaFx Bild Höhe und Breite wurden rückwärts?

 gc.save(); 
     gc.transform(new Affine(new Rotate(angle, getCenterX(), getCenterY()))); 
     gc.drawImage(image, x, y); 
     gc.restore(); 

„Gc“ ist das Graphics. Die getCenter-Methoden verwenden die Höhe und Breite der Bilder. Die Bilder werden jedoch nicht ordnungsgemäß gerendert. Ich habe einige Tests durchgeführt und festgestellt, dass, wenn ich die Methode get Breite verwende, es tatsächlich die Höhe des Bildes zurückgibt. Wenn ich die Höhe Methode aufrufen, gibt es die Breite zurück. Meine Vermutung ist, dass dies daran liegt, dass die von mir verwendeten PNG-Bilder um 90 Grad gegenüber ihrem ursprünglichen Zustand gedreht wurden. Allerdings, wenn ich zur Vorschau gehe und ihre Größe anschaue, scheint alles in Ordnung zu sein. Ich habe versucht, die Bilder zu duplizieren, aber es funktioniert nicht wirklich. Irgendwelche Ideen, wie das zu beheben ist? Ich habe kein überprüfbares Codebeispiel, weil ich glaube, dass diese Frage mehr mit den Eigenschaften der PNG-Dateien und den javaFx-Bildmethoden als mit der Programmlogik verbunden ist. enter image description here enter image description here


Hier ist die überprüfbare Codebeispiel:

import javafx.embed.swing.JFXPanel; 
import javafx.scene.image.Image; 

public class TestImage {  
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     JFXPanel jfxPanel = new JFXPanel(); 
     Image BLUE01 = new Image("/blue01.png"); 
     System.out.println("height : "+ BLUE01.getHeight()); 
     System.out.println("wdith : "+ BLUE01.getWidth()); 
    } 
} 

Und hier ist das Bild: enter image description here

+0

wo ist die Methodendefinition von image.getWidth()? – Aaron

+0

@Aaron Es ist eine javaFx-Methode https://docs.oracle.com/javase/8/javafx/api/toc.htm – Ptolemorphism

+0

Ist es vernünftig anzunehmen, dass "getWidth" auch den aktuellen Grafikkontext durchläuft? Wenn Sie die rotierende Linie entfernen, funktioniert sie dann richtig? – usr2564301

Antwort

0

Es scheint, dass das Problem von nicht meinen Code kommt aber meine Verwendung von IDE ... Es stellt sich heraus, dass nachdem ich Bild bearbeiten oder hinzufügen In meinem Ressourcenordner muss ich auf "Aktualisieren" in Eclipse klicken ...