image getscaledinstance(int width, int height,int hints)
建立此影像的縮放版本。返回一個新的 image 物件。
如果 width 或 height 為負數,則替換該值以維持初始影像尺寸的高寬比。如果 width 和 height 都為負,則使用初始影像尺寸。
引數:
width - 將影像縮放到的寬度。
height - 將影像縮放到的高度。
hints - 指示用於影像重新取樣的演算法型別的標誌。
hints說明:
常量 | 說明 |
---|---|
SCALE_AREA_AVERAGING | 表示採用區域平均影像縮放演算法 |
SCALE_DEFAULT | 表示採用預設的影像縮放演算法 |
SCALE_FAST | 表示採用快速的影像縮放演算法,此演算法注重速度,但縮放的影像可能不是很平滑 |
SCALE_REPLICATE | 採用ReplicateScaleFilter類中包含的影像縮放演算法 |
SCALE_SMOOTH | 表示採用側重縮放效果的結果影像的平滑性不側重速度的影像縮放演算法 |
如果要讓圖片自適應視窗,只要將width,height設為視窗的寬和高。
import javax.swing.*; import java.awt.*;
public class Frame_Test {
public static void main(String[] args) {
JFrame jFrame=new JFrame(""); //建立一個視窗
jFrame.setSize(400,600);//設定視窗大小
jFrame.setLocationRelativeTo(null);//視窗居中
jFrame.getContentPane().setLayout(null);//無佈局,記得下面新增控制元件時要設定它們位置和大小
JPanel imPanel=(JPanel) jFrame.getContentPane();//注意內容皮膚必須強轉為JPanel才可以實現下面的設定透明
imPanel.setOpaque(false);//將內容皮膚設為透明
ImageIcon icon=new ImageIcon("src/dogy.jpg");//背景圖
JLabel label = new JLabel(icon);//往一個標籤中加入圖片
label.setBounds(0, 0, jFrame.getWidth(), jFrame.getHeight());//設定標籤位置大小,記得大小要和視窗一樣大
icon.setImage(icon.getImage().getScaledInstance(label.getWidth(), label.getHeight(), Image.SCALE_DEFAULT));//圖片自適應視窗大小
jFrame.getLayeredPane().add(label, Integer.valueOf(Integer.MIN_VALUE));//標籤新增到層皮膚
jFrame.setVisible(true);//設定視窗可見
}
}