Java Texturen in 2D Objekten?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

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.


Witcher1Spieler 
Beitragsersteller
 12.02.2025, 21:15

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!

regex9  12.02.2025, 21:22
@Witcher1Spieler

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.