2012-07-25 369 views
0

任何人都可以解釋這一點,有3種方法可以創建Image對象,但只有最後一個對象(k)可以使用getscalledinstance()成功縮放。在java中使用getScaledInstance()縮小圖像

public class scalingTest extends JPanel { 

    public static Image i; 
    public static Image j; 
    public static Image k; 
    scalingTest() throws IOException 
    { 
     i = Toolkit.getDefaultToolkit().getImage("C:/Users/Prashant/Desktop/2.png"); 
     j = new ImageIcon("C:/Users/Prashant/Desktop/2.png").getImage(); 
     k = ImageIO.read(new File("C:/Users/Prashant/Desktop/2.png")); 
    } 
    public static void main(String s[]) throws IOException 
    { 
     JFrame jf = new JFrame("Scaling TEST"); 
     jf.add(new scalingTest()); 
     jf.setSize(500, 500); 
     jf.setVisible(true); 
    } 
    @Override 
    public void paintComponent(Graphics g) 
    { 
     g.drawImage(i.getScaledInstance(100, 100, Image.SCALE_DEFAULT), 0, 0, this); 
     g.drawImage(j.getScaledInstance(100, 100, Image.SCALE_DEFAULT), 100, 100, this); 
     g.drawImage(k.getScaledInstance(100, 100, Image.SCALE_DEFAULT), 200, 200, this); 
    } 
} 

回答

0

閱讀Image.getScaledInstance的Javadoc中:返回

Image對象將呈現 在指定widthheight默認圖像。即使原始源圖像 已完全加載,也可以異步加載新的Image對象 。

確保縮放後的圖像確實是當您嘗試繪製(尋找「確保圖像滿載」如果您需要諮詢如何做到這一點)。它與通過ImageIO獲得的圖像一起工作的原因是ImageIO爲您提供了一個BufferedImage,並且始終加載該圖像。

另請注意:爲了簡單地將圖像繪製爲除圖像大小以外的大小,您不需要創建縮放實例 - 圖形具有方法以實時繪製不同大小的圖像。根據使用情況,您可能會更好使用它。

+0

感謝兄弟,這是非常有幫助的 – 2012-07-27 17:21:46