2

paint() メソッドがすでに他の目的で使用されている場合、JPanel で画像を背景として使用するにはどうすればよいですか? (パネル内の画像の上に描画しようとしています)。

鉛筆として描画するコードは次のとおりですが、画像を背景として追加する方法がわかりません。

@Override
public void paint(Graphics g) {

    if (x >= 0 && y >= 0) {
        g.setColor(Color.BLACK);
        g.fillRect(x, y, 4, 4);

    }
}

ありがとうディエゴ

4

2 に答える 2

4

提案:

  • JPanelのpaint(...)方法を使用するのではなく、その方法を使用してくださいpaintComponent(...)。これにはいくつかの理由があります。1つは、このpaint(...)方法を使用する場合、JPanelの境界線と子コンポーネントを描画する責任があり、これらの人のレンダリングを台無しにするリスクがあることです。また、Swingの自動ダブルバッファリングも失われます。
  • メソッド内の他のコードを呼び出す前に、まず親クラスのスーパーメソッドを呼び出します。これにより、JPanelは背景を更新し、実行する必要のあるグラフィックスのハウスキーピングを実行できるようになります。
  • 次にg.drawImage(...)、を使用して背景画像を描画します。
  • 次に、鉛筆画をします。
于 2012-08-24T01:20:27.250 に答える
4

Hovercraft Full Of Eels は、取るべき方向について良いアドバイスをくれました。ここに別のものがあります。

  • 画像を a ( ImageIcona 内)に表示しJLabelます。
  • ペイントするときは、次のようにします。
    • を呼び出しcreateGraphics()てオブジェクトBufferedImageを取得しGraphics2Dます。
    • 線またはその他のビジュアル要素をグラフィックス インスタンスにペイントします。
    • グラフィックス インスタンスを破棄します。
    • repaint()ラベルを呼び出します。

この回答に見られるEG 。

于 2012-08-24T01:27:59.963 に答える