9

私はにを持ってJPanelJFrameます。私は写真をロードしましたJPanelが、それは写真のほんの一部を示しています:これは私がそれをしたコードの一部です:

JPanel panelImg = new JPanel()
{
    public void paintComponent(Graphics g)
    {
        Image img = new ImageIcon("Welcome.png").getImage();
        Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
        setPreferredSize(size);
        setMinimumSize(size);
        setMaximumSize(size);
        setSize(size);
        setLayout(null);
        g.drawImage(img, 0, 0, null);
    }
};
mainFrame.add(panelImg);

したがって、次のようになります。

写真1

全体像は次のようになります。

ここに画像の説明を入力してください

画像をJFramesサイズに拡大縮小する方法はありますか?前もって感謝します

4

5 に答える 5

13

drawImage()ターゲットコンテナに合わせてスケーリングする必要があります。代替案については、ここで引用されている記事を参照してください。例えば、

g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
于 2012-10-23T20:11:38.033 に答える
13

まず、paintComponentメソッド内に画像をロードしません。このメソッドは繰り返し呼び出されます(場合によってはすばやく連続して呼び出されます)。実行に時間がかかることや、リソースを不必要に消費することはしたくありません。

Javaをチェックしてください:JPanelの背景画像のアスペクト比を維持して、特定の領域への画像の塗りつぶし/フィッティングに関する提案を確認してください

于 2012-10-23T20:17:24.083 に答える
2
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;

public class ImagePanel extends JPanel {

    Image image;

    public void setBackground(Image image) {
        this.image = image;
    }

    @Override
    public void paintComponent(Graphics G) {
        super.paintComponent(G);
        G.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), null);
    }

}

SetBackground次に、次のようなImagePanelオブジェクトメソッドを使用します

imagePanel1.SetBackGround(ImageIO.read(new File("extensions/images/background.jpg")));
于 2013-07-03T12:19:25.683 に答える
1

あなたはこれを試すことができます:

Image img = new ImageIcon(ImageIO.read(new File("welcome.png"))
                               .getScaledInstance(WIDTH, HEIGHT, Image.SCALE_SMOOTH)));
于 2014-06-22T15:15:01.183 に答える
1

それは簡単です。この例に従ってください、

public class BasePanel extends JPanel {

ImageIcon backImage;
public BasePanel() {
    backImage = new ImageIcon("src/images/welcome.png");
}

@Override
protected void paintComponent(Graphics g) {
    BufferedImage scaledImage = getScaledImage();
    super.paintComponent(g);
    g.drawImage(scaledImage, 0, 0, null);
}

private BufferedImage getScaledImage(){
    BufferedImage image = new BufferedImage(getWidth(),getHeight(), BufferedImage.TYPE_INT_RGB);
    Graphics2D g2d = (Graphics2D) image.createGraphics();
    g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY));
    g2d.drawImage(backImage.getImage(), 0, 0,getWidth(),getHeight(), null);

    return image;
}

}
于 2016-01-01T04:34:59.943 に答える