Alf*_*red 2 java doublebuffered
我在互联网上找到了这个双缓冲代码,但它没有解释.我在这段代码中有点困惑.
为什么使用Image"i"?如果要使用一次它有什么用?
当我们已经设置了颜色时,为什么我们要为前景颜色指定更改颜色?
什么是g.drawImage()方法呢?
这是代码:
public void update(Graphics g)
{
if(i==null)
{
i=createImage(getWidth(), getHeight());
graph=i.getGraphics();
}
graph.setColor(getBackground());
graph.fillRect(0, 0, getWidth(),getHeight());
graph.setColor(getForeground());
paint(graph);
g.drawImage(i,0,0,this);
}
Run Code Online (Sandbox Code Playgroud)
问候
Double Buffering的基本思想是在屏幕外创建图像,然后立即显示所有图像.
从这里找到的java教程
你在那里的代码首先创建一个图像,在第一次通过这个位作为你的"后缓冲区",我可能是一个字段,如
private Image i;
private Graphics graph;
if(i==null)
{
i=createImage(getWidth(), getHeight());
graph=i.getGraphics();
}
Run Code Online (Sandbox Code Playgroud)
然后使用此方法将背景颜色绘制到图像上
graph.setColor(getBackground());
graph.fillRect(0, 0, getWidth(),getHeight());
Run Code Online (Sandbox Code Playgroud)
然后设置前面准备绘图.
graph.setColor(getForeground());
paint(graph); /draws
Run Code Online (Sandbox Code Playgroud)
最后将后缓冲区拉到主表面上.
g.drawImage(i,0,0,this);
Run Code Online (Sandbox Code Playgroud)