О том, что такое двойная буферизация много написано здесь и здесь.
Здесь можно почитать, как реализуется ДБ на Java.
Я расскажу, как реализуется двойная буферизация на C#. Многое из того, что здесь написал можно прочитать в MSDN, но без деталей реализации.
Ручное управление двойной буферизацией (далее ДБ)
Для ручного управления двойной буферизацией, .NET Framework предоставляет следующие 3 класса:
- BufferedGraphics – обеспечивает буфер для временного хранения графики и средства вывода её на полотно контрола.
- BufferedGraphicsContext — обеспечивает создание нового объекта BufferedGraphics на основе объекта Graphics;
- BufferedGraphicsManager – предоставляет дефолтный BufferedGraphicsContext.