gpt4 book ai didi

java - 使用 BufferedImage 的 drawImage() 不会绘制

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

import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;

public class Main
{
JFrame jf;
Main()
{
jf=new JFrame();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.add(new MyCanvas());
jf.pack();
jf.setVisible(true);
}
public static void main(String[] args)
{
MyCanvas.img=Toolkit.getDefaultToolkit().createImage("1.jpg");
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new Main();
}
});
}
}
class MyCanvas extends JComponent
{
static Image img;
BufferedImage bi;
MyCanvas()
{
setPreferredSize(new Dimension(200,200));
bi=new BufferedImage(200,200,BufferedImage.TYPE_INT_ARGB);
Graphics g=bi.getGraphics();
for (int i=0;i<10;i++)
for (int j=0;j<10;j++)
g.drawImage(img,i*20,j*20,20,20,this);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(bi,0,0,this);
//g.drawImage(img,0,0,this);
}
}

如果我取消注释行 g.drawImage(img,0,0,this); 我会在窗口上看到我的图像。但使用这段代码我看到空窗口。很容易理解 g.drawImage(img,i*20,j*20,20,20,this); in 循环不绘制,但问题是什么?

最佳答案

删除了我所做的不相关的内容,以便 future 的读者更容易找到答案。在 java 中,我总是必须使用 getResource 或 getResourceAsStream 来确保从正确的目录正确加载文件。

class MyCanvas extends JComponent
{
public static Image loadImage(String s)
{
try
{
return ImageIO.read(Main.class.getResource(s));
}
catch (Exception ex)
{
ex.printStackTrace();
return null;
}
}
}

关于java - 使用 BufferedImage 的 drawImage() 不会绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9445609/

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