Практическое руководство. Отрисовка буферизованной графики вручную
Если вы управляете собственной буферизованной графикой, вам потребуется создать и отобразить буферы графики. Экземпляры класса BufferedGraphics, связанного с поверхностями рисования на экране, можно создать, вызвав метод Allocate. Этот метод создает экземпляр BufferedGraphics, связанный с определенной областью отрисовки, например формой или элементом управления. После создания экземпляра BufferedGraphics можно нарисовать графику на буфер, который он представляет, через свойство Graphics. После выполнения всех графических операций можно скопировать содержимое буфера на экран, вызвав метод Render.
Заметка
Если вы выполняете собственную отрисовку, потребление памяти увеличится, хотя увеличение может быть незначительным.
Отображение буферизованной графики вручную
Получите ссылку на экземпляр класса 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);
' This example assumes the existence of a form called Form1. Dim currentContext As BufferedGraphicsContext Dim myBuffer As BufferedGraphics ' 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(Me.CreateGraphics, _ Me.DisplayRectangle)
Отрисовка изображений в графический буфер путем задания свойства Graphics. Например:
// Draws an ellipse to the graphics buffer. myBuffer.Graphics.DrawEllipse(Pens.Blue, this.DisplayRectangle);
' Draws an ellipse to the graphics buffer. myBuffer.Graphics.DrawEllipse(Pens.Blue, Me.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());
' 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(Me.CreateGraphics)
После завершения отрисовки графики вызовите метод
Dispose
экземпляра BufferedGraphics для освобождения системных ресурсов.myBuffer.Dispose();
myBuffer.Dispose()
См. также
.NET Desktop feedback