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);
が描画しないのは分かりやすいですが、何が問題なのですか?BufferedImageを使用したdrawImage()は描画されません
'MyCanvas.img = Toolkit.getDefaultToolkit()。createImage(" 1.jpg ");'この行の何が間違っていますか? 'ImageIO.read()'を使って、私は望みの結果を得ます。 – eXXXXXXXXXXX2
あなたは 'g.drawImage(img、0,0、this); 'と言ってくれますか?事前に作業していましたので、私が言わなければならなかったのは、javaがルートと見なすフォルダ間違った場所。 – annirun
@eXXXXXXXXXXX: 'createImage()'は非同期です。 +1は 'ImageIO'です。 – trashgod