gpt4 book ai didi

java - 如何在JPanel中居中对齐背景图片

转载 作者:搜寻专家 更新时间:2023-10-31 19:31:07 26 4
gpt4 key购买 nike

我想将背景图像添加到我的 JFrame
背景图像意味着我以后可以在 JFrameJPanel
上添加组件虽然我找不到如何将背景图像添加到 JFrame
我从这里找到了如何将背景图像添加到 JPanel:
How to set background image in Java?

这解决了我的问题,但现在由于我的 JFrame 可以调整大小,所以我想将图像保持在中心位置。
我查到的代码就是用这个方法

public void paintComponent(Graphics g) { //Draw the previously loaded image to Component.  
g.drawImage(img, 0, 0, null);  //Draw image
}

谁能说出如何将图像对齐到 JPanel 的中心。
作为 g.drawImage(img, 0, 0, null); 提供 x=0 和 y=0
另外,如果有一种方法可以将背景图像添加到 JFrame 那么我想知道。
谢谢。

最佳答案

假设一个合适的image,你可以像这样将它居中:

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
int x = (this.getWidth() - image.getWidth(null)) / 2;
int y = (this.getHeight() - image.getHeight(null)) / 2;
g2d.drawImage(image, x, y, null);
}

如果您希望其他组件随背景一起移动,您可以更改图形上下文的仿射变换以保持图像居中,如更完整的 example 所示。这包括旋转。

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.translate(this.getWidth() / 2, this.getHeight() / 2);
g2d.translate(-image.getWidth(null) / 2, -image.getHeight(null) / 2);
g2d.drawImage(image, 0, 0, null);
}

关于java - 如何在JPanel中居中对齐背景图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4533526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com