我做了一个JLabel
我在这里显示我的图像:
BufferedImage myimage;
imageLabel.setIcon(new ImageIcon(myimage));
是否可以使用setIcon
命令绘制图像并在其上绘制较小的图像(图标)?我该怎么做?
例如:
BufferedImage myimage1;
BufferedImage myLittleIcon;
imageLabel.setIcon(new ImageIcon(myimage1));
imageLabel.setIcon(new ImageIcon(myLittleIcon));
上面只是画了一个小图标。
答案 0 :(得分: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));
这会创建一个新图像,绘制大图标,然后绘制小图标。
您还可以绘制其他内容,例如outlining a rectangle或filling an oval。
对于更高级的图形功能,请尝试转换为Graphics2D对象。