logo
CSharp_Graphics

Копирование пикселов для уменьшения эффекта дрожания изображения в Windows Forms

При создании простых анимированных изображений могут появиться мерцание или другие нежелательные визуальные эффекты. Один из способов ограничения этих эффектов — применение к изображению процесса bitblt. Функция Bitblt выполняет перемещение набора битов с информацией о цвете из исходного прямоугольника точек в конечный прямоугольник.

В Windows Forms для реализации функции bitblt используется метод CopyFromScreen класса Graphics. В списке параметров метода указываются координаты исходной и конечной областей (в виде точек), размер копируемой области и графический объект, с помощью которого рисуется новая форма.

В следующем примере рисование фигуры на форме происходит в обработчике события Paint этой формы. После этого фигура копируется с помощью метода CopyFromScreen.

Примечание.

Установка значения свойства DoubleBuffered формы равным true включает двойную буферизацию для кода обработки графики в обработчике события Paint. Хотя использование такого подхода в приведенном ниже коде не дает заметного выигрыша в производительности, о нем все равно стоит помнить при работе с кодом, управляющим более сложными графическими конструкциями.

Пример

------