Image

Imageicey wrote in Imagejava_dev

The Concept of Double Buffering

We're doing a graphics project in Comp Sci and i was wondering how I implement Double Buffering in an application (i dun wanna do an applet).

I understand the concept of drawing the off screen image and then flipping it to the one screen image by updating or whatever...

but how do I implement all of this into my source code?


<br />/* A simple Double Buffering example by Jayant Mukherjee (courtesy: Complete Reference) */<br />/* Another way of doing the same is described by Wayne McKenzie on PSC */<br />import java.awt.*;<br />import java.applet.*;<br />import java.awt.image.*;<br />import java.awt.event.*;<br /><br /><br /> public class DblBuffr extends Applet implements MouseMotionListener{<br /> int ax,ay;<br /> Dimension dSize;<br /> Image dblBuffImg; //Off Screen<br /> Graphics dblBuffer; //Off Screen Graphics<br /> public void init(){ <br /> dSize = this.getSize();<br /> dblBuffImg = this.createImage(dSize.width, dSize.height);<br /> dblBuffer = dblBuffImg.getGraphics();<br /> addMouseMotionListener(this);<br /> this.setBackground(Color.yellow);<br />}<br /><br />public void mouseDragged(MouseEvent em){} //Not used, but required<br />public void mouseMoved(MouseEvent em)<br /><br /><br /> {<br /> ax = em.getX();<br /> ay = em.getY();<br /> this.paint(this.getGraphics()); //Fast repainting<br />}<br /><br />public void update(){} //Overriding, for Flicker Free Drawing<br />public void paint(Graphics g)<br /><br /><br /> { <br /> dblBuffer.clearRect(0, 0, dSize.width, dSize.height); <br /> for(int i=0; i&lt;=dSize.width; i=i+10)<br /><br /><br /> {<br /> dblBuffer.drawLine(ax,ay,i,0); //Top edge <br /> dblBuffer.drawLine(ax,ay,i,dSize.height)<wbr />; //Bottom edge<br /> }<br /><br /> for(int i=0; i&lt;=dSize.height; i=i+10)<br /><br /><br /> {<br /> dblBuffer.drawLine(ax,ay,0,i); //Left edge<br /> dblBuffer.drawLine(ax,ay,dSize.width,i);<wbr /> //Right edge<br /> }<br /><br /> g.drawImage(dblBuffImg, 0, 0, null);<br />}<br /><br />}<br />