Ich versuche, ein Bild, das ich auf ein ImagePanel gezeichnet habe (ein JPanel zu erweitern) zu ändern, und es scheint nicht zu funktionieren. Ich habe einen Beispielcode aus dem Internet bekommen, der die Methode paint() überschreibt, ich denke, das könnte das Problem sein, hier ist mein Code.Java Swing: Größe von JPanel mit Bild ändern
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (img != null) { // Scale it by width int scaledWidth = (int)((img.getWidth() * getHeight()/img.getHeight()));
// If the image is not off the screen horizontally...
if (scaledWidth < getWidth()) {
// Center the left and right destination x coordinates.
int leftOffset = getWidth()/2 - scaledWidth/2;
int rightOffset = getWidth()/2 + scaledWidth/2;
g.drawImage(img, leftOffset, 0, rightOffset, getHeight(), 0, 0, img.getWidth(), img.getHeight(), null);
}
// Otherwise, the image width is too much, even scaled
// So we need to center it the other direction
else {
int scaledHeight = (img.getHeight() * getWidth())/img.getWidth();
int topOffset = getHeight()/2 - scaledHeight/2;
int bottomOffset = getHeight()/2 + scaledHeight/2;
g.drawImage(img, 0, topOffset, getWidth(), bottomOffset, 0, 0, img.getWidth(), img.getHeight(), null);
}
}
}
und ich rufe es aus ...
public void resetImage(double width, double height) {
BufferedImage scaledImage = new BufferedImage((int)width, (int)height,BufferedImage.TYPE_INT_ARGB);
// Paint scaled version of image to new image
Graphics2D graphics2D = scaledImage.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
this.setSize((int)img.getWidth(), (int)img.getHeight());
graphics2D.drawImage(this.img, 0, 0, (int)width, (int)height, null); graphics2D.dispose();
}
(wo Breite und Höhe in dieser blurp ist die neue Breite und Höhe angewandt werden.
Dank.
Was funktioniert nicht? Was erwartest du zu passieren? Gib uns mehr davon - wir werden deine Umgebung nicht neu erschaffen, nur um dir zu helfen. – I82Much