Поделиться через


Практическое руководство. Визуализация буферизированной графики вручную

Обновлен: Ноябрь 2007

При управлении собственной буферизованной графикой необходимо иметь возможность создавать буферы с графикой и визуализировать их. Чтобы создать экземпляр класса BufferedGraphics, связанный с поверхностью рисования на экране, необходимо вызвать метод Allocate. Этот метод создает экземпляр BufferedGraphics, связанный с определенной областью отображения, например с формой или элементом управления. После создания экземпляра BufferedGraphics можно добавлять графические элементы в буфер, доступный через свойство Graphics. После выполнения всех операций с графикой можно скопировать содержимое буфера на экран с помощью метода Render.

ka0yazs1.alert_note(ru-ru,VS.90).gifПримечание.

При выполнении собственной отрисовки потребление памяти увеличится, хотя это увеличение может быть и незначительным.

Вывод буферизованной графики вручную

  1. Получите ссылку на экземпляр класса BufferedGraphicsContext. Дополнительные сведения см. в разделе Практическое руководство. Управление буферизацией графики.

  2. Создайте экземпляр 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);
    
  3. С помощью свойства 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);
    
  4. После завершения операций рисования в графическом буфере вызовите метод 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());
    
  5. После завершения отрисовки графики вызовите метод Dispose экземпляра BufferedGraphics, чтобы освободить ресурсы системы.

    myBuffer.Dispose()
    
    myBuffer.Dispose();
    

См. также

Задачи

Практическое руководство. Управление буферизацией графики

Основные понятия

Двойная буферизация графики

Ссылки

BufferedGraphicsContext

BufferedGraphics