How to draw double buffered in C# or Java using GDI+

You draw something on a form using GDI+ or any other graphics library and try to update it with a timer. The problem is that the resulting display is flicking due to the lack of double buffering. Here is the solution. You have to draw on an image and then draw this image once using your Graphics object. This way you can obtain smooth display. Here is a simple code:

Graphics displayGraphics = e.Graphics;
Random r = new Random();
Image i = new Bitmap(ClientRectangle.Width, ClientRectangle.Height);
Graphics g = Graphics.FromImage(i);
g.FillRectangle(Brushes.White, ClientRectangle);
for (int x = 0; x < ClientRectangle.Width; x++)
{
    for (int y = 0; y < ClientRectangle.Height; y += 10)
    {
        Color c = Color.FromArgb(r.Next(25), r.Next(55), r.Next(5));
        Pen p = new Pen(c, 1);
        g.DrawLine(p, new Point(ClientRectangle.Width/2, ClientRectangle.Height/2), new Point(x, y));
        p.Dispose();
    }
}
displayGraphics.DrawImage(i, ClientRectangle);
i.Dispose();


added 4 years ago

- What does chess ELO ratings mean?
- WAMP Mysqli: Your password has expired
- Search Engine optimization: Google's 200 Ranking Factors
- MySQL Dump/Restore, Dumping MySQL Database and Tables using MysqlDump command
- iPhone 4S vs iPhone 5 vs Samsung Galaxy S3 comparison results
- Source Code of Matrix Multiplication
- How to Install Oracle Java on Ubuntu Linux? Java Performance Problems
- How to create your own PHP caching system? A simple example
- What is CSS and why is it useful?
- Domain Life Cycle
- How to Use a Router as a Repeater?
- Comparison of Random Functions According to their Exploration Performance (STL, .NET, Java)
- How to install Memcached on Win 7 + WAMP Server, the simplest way of all
- How to draw double buffered in C# or Java using GDI+
- How to restart page numbering for each chapter in Word 2007 – 2010
- How to recover Ubuntu after installing Windows using Ubuntu live cd