【发布时间】:2019-02-13 16:07:52
【问题描述】:
我正在尝试从任意图像文件创建一个 BufferedImage,然后将该图像置于 JPanel 的背景中。我对方形图像没有任何问题,但我不知道如何处理非方形图像。
一些调试表明(直接的)问题是,当我使用 ImageIO 从矩形输入文件(比如 256x128)创建 BufferedImage 时,BufferedImage.getHeight() 返回 256 而不是 128。
这是一个近似于我的代码的 sn-p:
class ExtendedPanel extends JPanel {
static final int WIDTH = 400;
static final int HEIGHT = 400;
BufferedImage image;
public ExtendedPanel(File f) {
super();
setPreferredSize(new Dimension(WIDTH,HEIGHT));
image = ImageIO.read(f);
}
@Override
public void paintComponent(Graphics g) {
int x = (WIDTH - image.getWidth())/2;
int y = (HEIGHT - image.getHeight())/2;
Graphics2D g2d = (Graphics2d)g;
g2d.drawRenderedImage(image,AffineTransform.getTranslateInstance(x,y));
}
}
正如我所说,这适用于方形图像文件。但是对于宽于高的矩形图像,图像显示得比应有的高。我还没有尝试过使用比宽度更高的图像,但我担心在这种情况下图像会显示在左侧太远。我能做什么?
【问题讨论】:
标签: java bufferedimage javax.imageio