java 双缓冲绘图技术 问题,希望高人解答
本想用双缓冲技术,不知道为什么程序全部反色,黑色变白色,白色变黑色。以下是我的paint()代码:publicvoidpaint(Graphicsg){BufferedI...
本想用双缓冲技术,不知道为什么程序全部反色,黑色变白色,白色变黑色。
以下是我的paint()代码:
public void paint(Graphics g){
BufferedImage bi = new BufferedImage(500,500,BufferedImage.TYPE_INT_ARGB);
Graphics g2 = bi.createGraphics();
中间省略g2.XXXX
g.drawImage(bi,0,0,this);
}
但是改为又显示正常:
public void paint(Graphics g){
BufferedImage bi = (BufferedImage)createImage(500,500);
Graphics g2 = bi.createGraphics();
中间省略g2.XXXX
g.drawImage(bi,0,0,this);
}
这个我不了解,希望能得到详细的解答,谢谢 展开
以下是我的paint()代码:
public void paint(Graphics g){
BufferedImage bi = new BufferedImage(500,500,BufferedImage.TYPE_INT_ARGB);
Graphics g2 = bi.createGraphics();
中间省略g2.XXXX
g.drawImage(bi,0,0,this);
}
但是改为又显示正常:
public void paint(Graphics g){
BufferedImage bi = (BufferedImage)createImage(500,500);
Graphics g2 = bi.createGraphics();
中间省略g2.XXXX
g.drawImage(bi,0,0,this);
}
这个我不了解,希望能得到详细的解答,谢谢 展开
2个回答
展开全部
因为 BufferedImage bi = new BufferedImage(500,500,BufferedImage.TYPE_INT_ARGB);这句话只是创建了一个缓冲区,但是这个缓冲区是谁的????鬼知道!!!你必须创建当前窗口的缓冲区才会在当前窗口用到啊。 BufferedImage bi = (BufferedImage)createImage(500,500);其实就是用当前对象来创建,其实也就是 BufferedImage bi = (BufferedImage)this.createImage(500,500);省略了this而已,但就是它才能指明这个缓冲区是对当前窗口而言的了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询