我目前正在尝试将图像绘制到JFrame(只是废话测试图像)。在下面的代码段中,图像被绘制到JFrame,但是图像周围未填充JFrame的区域为黑色,并迅速闪烁。
这是下面的代码:
try {
myImage = ImageIO.read(ImagesMain.class.getResource("/Textures/TestImage.png"));
}catch(Exception e) {
e.printStackTrace();
}
BufferStrategy strategy = null;
while(strategy == null) {//I know this is terrible practice, just doing this way because its inside main
strategy = myCanvas.getBufferStrategy();
if(myCanvas.getBufferStrategy() == null) {
myCanvas.createBufferStrategy(3);
}
}
myFrame.setVisible(true);
//Rendering part
while(true) {
do {
do {
g = strategy.getDrawGraphics();
g.setColor(Color.WHITE);
g.drawImage(myImage, 20, 20, null);
g.dispose();
}while(strategy.contentsRestored());
strategy.show();
}while(strategy.contentsLost());
}
我已经多次测试并重新测试我的代码,但无济于事。我还应该补充一点,这都是在main方法中完成的(出于测试目的)。长话短说,如何在图像周围没有不必要的黑色闪烁的情况下显示图像?
答案 0 :(得分:0)
发生这种情况时,是因为没有清除其绘制的框架。在这种情况下,
需要g.clearRect(x, y, height, width);
来清除绘图框并显示清晰的图像。
以上评论由@MadProgrammer提供。