Udostępnij przez


Porady: ręczne zarządzanie buforowaną grafiką

W przypadku bardziej zaawansowanych scenariuszy podwójnego buforowania można użyć klas programu .NET Framework do zaimplementowania własnej logiki podwójnego buforowania. Klasa odpowiedzialna za przydzielanie poszczególnych buforów graficznych i zarządzanie nimi jest klasą BufferedGraphicsContext . Każda aplikacja ma własną wartość domyślną BufferedGraphicsContext , która zarządza wszystkimi domyślnymi podwójnym buforowaniem dla tej aplikacji. Odwołanie do tego wystąpienia można pobrać, wywołując element Current.

Aby uzyskać odwołanie do domyślnego elementu BufferedGraphicsContext

  • Current Ustaw właściwość, jak pokazano w poniższym przykładzie kodu.

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

    Uwaga

    Nie trzeba wywoływać Dispose metody w odwołaniu BufferedGraphicsContext otrzymaną BufferedGraphicsManager z klasy . Moduł BufferedGraphicsManager obsługuje całą alokację pamięci i dystrybucję dla wystąpień domyślnych BufferedGraphicsContext .

    W przypadku aplikacji intensywnie korzystających z grafiki, takich jak animacja, czasami można zwiększyć wydajność przy użyciu dedykowanego BufferedGraphicsContextBufferedGraphicsContext zamiast udostępnionego przez program BufferedGraphicsManager. Dzięki temu można tworzyć bufory graficzne i zarządzać nimi indywidualnie, bez ponoszenia obciążenia związanego z wydajnością zarządzania całą drugą buforowaną grafiką skojarzona z aplikacją, chociaż pamięć zużywana przez aplikację będzie większa.

Aby utworzyć dedykowany element BufferedGraphicsContext

  • Zadeklaruj i utwórz nowe wystąpienie BufferedGraphicsContext klasy, jak pokazano w poniższym przykładzie kodu.

    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()
    
    

Zobacz też