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

Для более сложных сценариев двойного буферизации можно использовать классы .NET Framework для реализации собственной логики двойной буферизации. Класс, ответственный за выделение отдельных графических буферов и управление ими, является BufferedGraphicsContext классом. Каждое приложение имеет собственное значение по умолчанию BufferedGraphicsContext , которое управляет всей двойной буферизацией приложения по умолчанию. Ссылку на этот экземпляр можно получить, вызвав метод Current .

Получение ссылки на BufferedGraphicsContext по умолчанию

  • Задайте Current свойство, как показано в следующем примере кода.

    BufferedGraphicsContext myContext;
    myContext = BufferedGraphicsManager.Current;
    
    Dim myContext As BufferedGraphicsContext
    myContext = BufferedGraphicsManager.Current
    
    

    Примечание

    Вам не нужно вызывать Dispose метод для BufferedGraphicsContext ссылки, полученной из BufferedGraphicsManager класса. BufferedGraphicsManagerОбработчик обрабатывает все операции выделения и распределения памяти для экземпляров по умолчанию BufferedGraphicsContext .

    Для ресурсоемких графических приложений, таких как анимация, иногда можно повысить производительность, используя выделенный BufferedGraphicsContext вместо, BufferedGraphicsContext предоставленный BufferedGraphicsManager . Это позволяет создавать графические буферы и управлять ими по отдельности без снижения производительности при управлении всеми другими буферизованными графиками, связанными с приложением, хотя объем памяти, потребляемый приложением, будет больше.

Создание выделенного BufferedGraphicsContext

  • Объявите и создайте новый экземпляр BufferedGraphicsContext класса, как показано в следующем примере кода.

    BufferedGraphicsContext myContext;
    myContext = new BufferedGraphicsContext();
    // Insert code to create graphics here.
    // On a non-default BufferedGraphicsContext instance, you should always
    // call Dispose when finished.
    myContext.Dispose();
    
    Dim myContext As BufferedGraphicsContext
    myContext = New BufferedGraphicsContext
    ' Insert code to create graphics here.
    ' On a nondefault BufferedGraphicsContext instance, you should always 
    ' call Dispose when finished.
    myContext.Dispose()
    
    

См. также