2011-01-03 8 views
0

hy、 私はグラフィックスで少し問題があります。イメージとグラフィックJava

Image BigImage = img.getScaledInstance(115, 154, java.awt.Image.SCALE_SMOOTH); 

と私はtiはグラフィック上でそれを描画しようとした:

g2.drawImage(BigImage, 0, 0, null); 

それは残念ながら働いていない私は、このようにリサイズした画像の魔女をしました。 それは私が追加した場合にのみ機能しますImageIcon te = new ImageIcon(BigImage);

Image BigImage = img.getScaledInstance(115, 154, java.awt.Image.SCALE_SMOOTH); 
ImageIcon te = new ImageIcon(BigImage); 
g2.drawImage(BigImage, 0, 0, null); 

あなたがなぜ任意のアイデアを持っていますか?あなたはそれを行う別の方法がありますか?

+2

「残念ながらうまくいきません」 - >ある種の「例外」がありますか?または画像は拡大縮小されていませんか?遭遇する問題は何か?ありがとう、 – coobird

答えて

1

コードが機能しない理由は今は言えませんが、this drawImage methodを使用して画像の拡大縮小されたインスタンスを直接描画できます。それは私のために働いた。

+0

しかしそれはまだ変です:s – gaymer

1

一部でImage.getScaledInstance()状態のdocumenttion ..

新しいImageオブジェクトは、元のソースイメージがすでに完全にロードされている場合でも、非同期をロードすることができます。問題を修正する

(マイ強調)

一つの方法は、それがレンダリングする前にロードされていることを確認するためにMediaTrackerのに画像を追加することです。しかし、最も重要なのは、paint()/ paintComponent()メソッドの中からこれを実行しないことです。これは、コードスニペットを考えればわかります。 ImageIconのインスタンス化はおそらく、画像を読み込むのに十分なだけ実行を遅くしていたでしょう。

私が提供するもう1つのヒントは、SSCCEを投稿するとすぐにより良い助けになるということです。これは、イメージベースの例では特に便利です。ネット上で利用可能なイメージにホットリンクされている場合、イメージのサイズが再スケーリングされた大きさを知ることができたからです。 ;)

関連する問題