3

GUI でカスタム サイズのアイコンを使用して Java JLabel を使用したいと考えています。このような :

http://i.stack.imgur.com/XVglU.png

このコードを使用して、元のアイコンのサイズを変更しました:

    ImageIcon imageIcon = (ImageIcon) jLabel1.getIcon();// new ImageIcon( "Play-Hot-icon.png");

    ImageIcon thumbnailIcon = new ImageIcon(getScaledImage(imageIcon.getImage(), 25 , 25));
    jLabel1.setIcon(thumbnailIcon);

ここに画像のサイズを変更するためのコードがあります

private Image getScaledImage(Image srcImg, int w, int h){

    BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
    Graphics2D g2 = resizedImg.createGraphics();

    g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);

    g2.drawImage(srcImg, 0, 0, w, h, null);

    g2.dispose();
    return resizedImg;
}    

しかし、画像のサイズを変更してこのコードを使用すると、結果は次のようになります! :

ここに画像の説明を入力

JLabelに希望の画像を表示するにはどうすればよいですか??

よろしく、サジャド

4

1 に答える 1

4

問題は、スケーリングされた画像を作成するときにBufferedImage.TYPE_INT_RGB、新しい画像に を使用すると、透明度が だけで黒としてレンダリングされることTYPE_INT_RGBです。

透過性を維持するにBufferedImage.TYPE_INT_ARGBは、アルファ コンポーネントが必要なため、これを に置き換える必要があります。

ただし、の画像でImage.getScaledInstanceを呼び出すと、既にアルファ コンポーネントを含むスケーリングされた画像が返されます。これにレンダリング ヒントを渡して、スケーリングされた画像の品質を試してみることができます。関数imageIconと本質的に同じことを行いますが、getScaledImage面倒の。

于 2011-01-31T02:45:22.083 に答える