Procedura: gestire manualmente le immagini memorizzate 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 BufferedGraphicsContext classe . Ogni applicazione ha un proprio valore predefinito BufferedGraphicsContext che gestisce tutto il doppio buffer predefinito per tale applicazione. È possibile recuperare un riferimento a questa istanza chiamando .Current

Per ottenere un riferimento all'oggetto BufferedGraphicsContext predefinito

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

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

    Nota

    Non è necessario chiamare il Dispose metodo sul BufferedGraphicsContext riferimento ricevuto dalla BufferedGraphicsManager classe . BufferedGraphicsManager Gestisce tutte le allocazioni di memoria e la distribuzione per le istanze predefiniteBufferedGraphicsContext.

    Per applicazioni a elevato utilizzo grafico, ad esempio l'animazione, a volte è possibile migliorare le prestazioni usando un oggetto dedicato BufferedGraphicsContext anziché quello BufferedGraphicsContext fornito da 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 BufferedGraphicsContext classe , 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()
    
    

Vedi anche