Java Texturen in 2D Objekten?
Wie fülle ich ein Bild, zum Beispiel ein zufällig mal eben gepixeltes von Paint, in ein 2D Objekt. Ich benutze java Swing und awt, also graphics 2D.
1 Antwort
Lade das Bild erst in eine BufferedImage-Instanz. Danach kannst du es mit der drawImage-Methode zeichnen.
Beispiel:
class SomeComponent extends JPanel {
private BufferedImage image;
private AffineTransform transform;
public SomeComponent() {
try {
image = ImageIO.read(getClass().getClassLoader().getResourceAsStream("resource path to image"));
}
catch (IOException ex) {
// handle exception ...
}
transform = new AffineTransform();
transform.translate(0, 0); // location where to draw
// set transformations, if necessary ...
}
@Override
public void paintComponent(Graphics graphics) {
var graphics2d = (Graphics2D) graphics;
if (image != null) {
graphics2d.drawImage(image, transform, null);
}
}
}
Falls dir getResourceAsStream noch unbekannt sein sollte, lies diesen Artikel von Mkyong.
Du brauchst eine Referenz auf eine Instanz der anderen Klasse. Die kannst du dir entweder via Parameterübergabe (an den Konstruktor oder eine Methode) holen oder du legst schon eine Instanz in der Klasse selbst an. Über die Referenz kannst du folgend die Getter-Methode aufrufen.
Welcher Weg für dich am meisten Sinn ergibt, musst du selbst am entsprechenden Fall entscheiden.
Einfache Code-Beispiele für die genannten Wege habe ich in diesem Beitrag schon einmal gezeigt.
Vielen Dank! Könntest du mir vielleicht noch sagen wie ich auf eine Variable in einer anderen Klasse zugreife? selbst wenn ich diese Public mache und einen getter erstelle, es funktioniert einfach nicht, das wäre sehr net!