2017-08-28 8 views
0

JFrameを使用してゲームを作成しようとしていて、画像を描画する必要があります。私はそれらをペイントするのGraphics2Dを使用していますが、これは私に何も出力を与えていない理由を私は把握できませんでした:Graphics2Dで画像を描画する

public void paint(Graphics g) { 
    Graphics2D g2d = (Graphics2D) g; 
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
      RenderingHints.VALUE_ANTIALIAS_ON);  
    Image img = Toolkit.getDefaultToolkit().getImage("src/resources/main/my_image"); 
    g2d.drawImage(img, 0, 0, null); 
    g2d.finalize(); 
} 

そして、私は実際に動作する画像を描画する方法を見つけることができませんでした。

+0

'finalize'を呼び出さないでください。 –

答えて

1

最初に「resources/main」(およびファイル拡張子がありません)について。これはMavenのプロジェクトであることを起こる場合は、パスは次のようになります。

src/main/resources/my_image.png 

1のような何かを行うことができ、リソースファイルを読み込むために:

このファイルには、その後、上のクラスに常駐し
Image img = ImageIO.read(getClass().getResourceAsStream("/my_image.png")); 

jarファイルを解凍してパスを確認することができます。 パスが正しくない場合、NullPointerExceptionが発生します。

0

最初のエラーはJava Tutorialに記載されている場合があります。 paint()を無効にしないでください。

paintComponentの方法では、すべてのカスタムペイントが行われます。 this answer 1として

2.また、あなたのグラフィックスオブジェクトにfinalize()を呼び出すべきではありませんが、私の知る限り、それはあなたの図面を妨害してはなりません。 finalize()が必要ない理由の詳細については、this answerも参照してください。

あなたのコンポーネントが画面に表示されていることを確認しましたか?サイズが0x0の場合、画像は描画されますが、まだ見えません。コンポーネントが見えるかどうかを確認する簡単な方法の1つは、そのサイズと位置を確認するために、境界線を緑色の線に(一時的に)変更することです。

4.Joop Eggen'sリソースの読み込みの回答を参照してください。画像が表示されない場合もあります。

関連する問題