Практическое руководство. Отрисовка буферизированной графики вручную
При управлении собственной буферизованной графикой необходимо иметь возможность создавать буферы графики и визуализировать их. Чтобы создать экземпляр класса BufferedGraphics, связанный с поверхностью рисования на экране, можно вызвать метод Allocate. Этот метод создает экземпляр BufferedGraphics, связанный с определенной поверхностью отрисовки, например формой или элементом управления. После создания экземпляра BufferedGraphics можно добавлять графические объекты в представляемый им буфер через свойство Graphics. После выполнения всех операций с графикой можно скопировать содержимое буфера на экран, вызвав метод Render.
Note
При выполнении собственной отрисовки потребление памяти увеличится, хотя это увеличение может быть и незначительным.
Вывод буферизованной графики вручную
Получите ссылку на экземпляр класса BufferedGraphicsContext. Дополнительные сведения см. в разделе Как Управление буферизацией графики.
Создайте экземпляр класса BufferedGraphics, вызвав метод Allocate, как показано в примере ниже.
// This example assumes the existence of a form called Form1. BufferedGraphicsContext currentContext; BufferedGraphics myBuffer; // Gets a reference to the current BufferedGraphicsContext currentContext = BufferedGraphicsManager.Current; // Creates a BufferedGraphics instance associated with Form1, and with // dimensions the same size as the drawing surface of Form1. myBuffer = currentContext.Allocate(this.CreateGraphics(), this.DisplayRectangle);
С помощью свойства Graphics поместите в буфер графические объекты. Пример:
// Draws an ellipse to the graphics buffer. myBuffer.Graphics.DrawEllipse(Pens.Blue, this.DisplayRectangle);
Завершив операции рисования в графическом буфере, вызовите метод Render, чтобы отрисовать содержимое буфера на связанной с ним поверхности рисования или на указанной поверхности, как показано в примере кода ниже.
// This example assumes the existence of a BufferedGraphics instance // called myBuffer. // Renders the contents of the buffer to the drawing surface associated // with the buffer. myBuffer.Render(); // Renders the contents of the buffer to the specified drawing surface. myBuffer.Render(this.CreateGraphics());
Выполнив отрисовку графики, вызовите метод
Dispose
экземпляра BufferedGraphics, чтобы освободить ресурсы системы.myBuffer.Dispose();