Condividi tramite


Procedura: Gestire manualmente la grafica memorizzata nel buffer

Per scenari di doppio buffering più avanzati, è possibile usare le classi .NET Framework per implementare la propria logica di doppio buffering. La classe responsabile dell'allocazione e della gestione dei singoli buffer grafici è la classe BufferedGraphicsContext. Ogni applicazione ha un proprio BufferedGraphicsContext predefinito che gestisce tutto il doppio buffer predefinito per tale applicazione. È possibile recuperare un riferimento a questa istanza chiamando il Current.

Per ottenere un riferimento al contesto grafico bufferizzato predefinito

  • Impostare la proprietà Current, come illustrato nell'esempio di codice seguente.

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

    Nota

    Non è necessario invocare il metodo Dispose sul riferimento BufferedGraphicsContext che si riceve dalla classe BufferedGraphicsManager. Il BufferedGraphicsManager gestisce tutte le allocazioni di memoria e la distribuzione per le istanze predefinite di BufferedGraphicsContext.

    Per applicazioni a elevato utilizzo grafico, ad esempio l'animazione, a volte è possibile migliorare le prestazioni usando un BufferedGraphicsContext dedicato anziché il BufferedGraphicsContext fornito dalla BufferedGraphicsManager. In questo modo è possibile creare e gestire i buffer grafici singolarmente, senza incorrere nel sovraccarico delle prestazioni di gestione di tutte le altre immagini memorizzate nel buffer associate all'applicazione, anche se la memoria utilizzata dall'applicazione sarà maggiore.

Per creare un oggetto BufferedGraphicsContext dedicato

  • Dichiarare e creare una nuova istanza della classe BufferedGraphicsContext, come illustrato nell'esempio di codice seguente.

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

Vedere anche