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

В более сложных сценариях двойной буферизации классы .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()
    
    

См. также