gpt4 book ai didi

java - 在面板上的缓冲图像上绘制文本

转载 作者:行者123 更新时间:2023-12-01 19:27:42 24 4
gpt4 key购买 nike

我正在编写一个由三个不同面板组成的程序。

这是我的底部面板的一部分。我使用 BufferedImage 显示图像,我想创建一些文本,这些文本将出现在图像中 350 像素左右、向下 15 像素的位置。我无法设法让它工作并覆盖 bufferedImage。

我当前的代码如下(对于底部面板):

public class BtmPanel extends JPanel {
BtmPanel(){
try {
JLabel imgLabel = new JLabel();
final BufferedImage img = ImageIO.read(new File("image.png"));
ImageIcon icon = new ImageIcon(img);
imgLabel.setIcon(icon);
this.add(imgLabel);
}
catch(IOException ie){
System.out.println("image does not exist");
}
}

protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("Y: " + MiddlePanel.y ,350,15);
}
}

最佳答案

根据您的需要和愿望,您可以通过多种方法来实现这一目标。

例如,您可以直接自己绘制图像,而不是使用 JLabel 来显示图像......

public class BtmPanel extends JPanel {
private BufferedImage image;
BtmPanel(){
try {
image = ImageIO.read(new File("image.png"));
}
catch(IOException ie){
System.out.println("image does not exist");
}
}

protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (image != null) {
g.drawImage(0, 0, image, this);
}
g.drawString("Y: " + MiddlePanel.y ,350,15);
}
}

这样做的原因是您(真正)无法控制图像在 JLabel 中的位置(很多事情都会影响它的定位)。

另一种解决方案是将文本直接绘制到 BufferedImage 本身上。您将使用哪个取决于文本的动态程度以及许多其他因素

关于java - 在面板上的缓冲图像上绘制文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59293361/

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