1

JLabel次のように画像を表示する場所を作成しました。

BufferedImage myimage;
imageLabel.setIcon(new ImageIcon(myimage));

コマンドを使用して、画像を描画し、その上に小さな画像 (アイコン) を描画することはできますsetIconか? どうすればいいですか?

例えば:

BufferedImage myimage1;
BufferedImage myLittleIcon;
imageLabel.setIcon(new ImageIcon(myimage1));
imageLabel.setIcon(new ImageIcon(myLittleIcon));

上記は小さなアイコンを描画するだけです。

4

1 に答える 1

4

呼び出すsetIconと、アイコンが上書きされます。ただし、次のようなことを試すことができます。

// Assumed that these are non-null
BufferedImage bigIcon, smallIcon;

// Create a new image.
BufferedImage finalIcon = new BufferedImage(
    bigIcon.getWidth(), bigIcon.getHeight(),
    BufferedImage.TYPE_INT_ARGB)); // start transparent

// Get the graphics object. This is like the canvas you draw on.
Graphics g = finalIcon.getGraphics();

// Now we draw the images.
g.drawImage(bigIcon, 0, 0, null); // start at (0, 0)
g.drawImage(smallIcon, 10, 10, null); // start at (10, 10)

// Once we're done drawing on the Graphics object, we should
// call dispose() on it to free up memory.
g.dispose();

// Finally, convert to ImageIcon and apply.
imageLabel.setIcon(new ImageIcon(finalIcon));

これにより、新しいイメージが作成され、大きなアイコンが描画され、次に小さなアイコンが描画されます。

長方形の輪郭を描いたり、楕円形を塗りつぶしたりするなど、他のものをペイントすることもできます。

より高度なグラフィックス関数については、 Graphics2Dオブジェクト へのキャストを試してください。

于 2012-12-02T05:05:28.573 に答える