Практическое руководство. Визуализация буферизированной графики вручную
Обновлен: Ноябрь 2007
При управлении собственной буферизованной графикой необходимо иметь возможность создавать буферы с графикой и визуализировать их. Чтобы создать экземпляр класса BufferedGraphics, связанный с поверхностью рисования на экране, необходимо вызвать метод Allocate. Этот метод создает экземпляр BufferedGraphics, связанный с определенной областью отображения, например с формой или элементом управления. После создания экземпляра BufferedGraphics можно добавлять графические элементы в буфер, доступный через свойство Graphics. После выполнения всех операций с графикой можно скопировать содержимое буфера на экран с помощью метода Render.
Примечание. |
---|
При выполнении собственной отрисовки потребление памяти увеличится, хотя это увеличение может быть и незначительным. |
Вывод буферизованной графики вручную
Получите ссылку на экземпляр класса BufferedGraphicsContext. Дополнительные сведения см. в разделе Практическое руководство. Управление буферизацией графики.
Создайте экземпляр BufferedGraphics, вызвав метод Allocate, как показано в следующем примере.
' 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)
// 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, Me.DisplayRectangle)
// Draws an ellipse to the graphics buffer. myBuffer.Graphics.DrawEllipse(Pens.Blue, this.DisplayRectangle);
После завершения операций рисования в графическом буфере вызовите метод Render, чтобы визуализировать содержимое буфера на связанную с буфером поверхность рисования или на выделенную поверхность рисования, как это показано в следующем примере кода.
' 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)
// 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()
myBuffer.Dispose();
См. также
Задачи
Практическое руководство. Управление буферизацией графики