BufferedImage Drehen Im Inneren JPanel
Ich versuche mich zu drehen BufferedImage
und zeigen Sie Sie in einem JLabel
(die in einem JPanel
). Das aktuelle Ergebnis erzeugt ein weißes Quadrat gedreht 10 Grad vor einem schwarzen hintergrund, aber das Bild ist nicht vorhanden, innerhalb des Quadrats. Ich weiß myPicture
ist nicht leer, da myPicture
selbst zeigt richtig in die JPanel
wenn nicht gedreht.
Hier ist der code:
int w = myPicture.getWidth();
int h = myPicture.getHeight();
BufferedImage newImage = new BufferedImage(w, h, myPicture.getType());
Graphics2D graphic = newImage.createGraphics();
graphic.rotate(Math.toRadians(10), w/2, h/2);
graphic.drawImage(myPicture, null, 0, 0);
picLabel.setIcon(new ImageIcon(newImage));
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da gibt es nicht viel zu gehen, aber zwei Dinge in den Sinn kommen. Es ist möglich, dass das Bild nicht die Leistung in die richtige position, nachdem er gedreht ist, und zwei, Sie sind nicht die Entsorgung des
Graphics
Kontext, wenn Sie fertig ist (nicht, dass ich glaube, es sollte einen Effekt haben, aber man weiß ja nie).Dies ist ein einfaches Beispiel, das macht das Ergebnis über
paintComponent
, aber das Konzept ist das gleiche.Er verwendet eine
AffineTransformation
um das Bild zu drehen.Update mit einem JLabel
Löste ich meine eigene Frage. Das problem lag in den code:
Da gibt es eine Menge von Variabilität in der Art der Bilder, die Sie könnten, um das Programm, die Ergebnisse werden unberechenbar, wenn Sie mit dem zeichnen beginnen, in das neue BufferedImage. Ich löste das problem durch festlegen des type-explizit, was in meinem Fall erforderlich
so dass die vollständige Erklärung zu Lesen: