GOOGLE ADS

Donnerstag, 14. April 2022

Rotierende BufferedImage-Instanzen

Ich habe Probleme, eine gedrehte BufferedImageAnzeige anzuzeigen. Ich denke, die Drehung funktioniert gut, aber ich kann sie nicht wirklich auf den Bildschirm zeichnen. Mein Code:

Class extends JPanel {
BufferedImage img;
int rotation = 0;
public void paintComponent(Graphics g) {
g.clearRect(0, 0, getWidth(), getHeight());
img2d = img.createGraphics();
img2d.rotate(Math.toRadians(rotation), img.getWidth() / 2, img.getHeight() / 2);
g.drawImage(img, imgx, imgy, null);
this.repaint();
}
}

Das funktioniert bei mir nicht. Ich konnte keine Möglichkeit finden, die gedrehte img2dauf zu zeichnen g.

BEARBEITEN: Ich habe mehrere Objekte, auf die gezeichnet wird g, also kann ich das nicht drehen. Ich muss in der Lage sein, die Dinge einzeln zu drehen.


Lösung des Problems

Vielleicht sollten Sie versuchen, Folgendes zu verwenden AffineTransform:

AffineTransform transform = new AffineTransform();
transform.rotate(radians, bufferedImage.getWidth() / 2, bufferedImage.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
bufferedImage = op.filter(bufferedImage, null);

Hoffe das hilft.

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...