Sdílet prostřednictvím


Postupy: Ruční vykreslení grafiky ve vyrovnávací paměti

Pokud spravujete vlastní grafiku ve vyrovnávací paměti, je nutné mít schopnost vytvářet a vykreslovat vyrovnávací grafické paměti. Instance třídy BufferedGraphics, která je přidružená k kreslicím plochám na obrazovce, můžete vytvořit zavoláním metody Allocate. Tato metoda vytvoří BufferedGraphics instanci, která je přidružena k určitému vykreslovací ploše, jako je formulář nebo ovládací prvek. Po vytvoření instance BufferedGraphics můžete pomocí vlastnosti Graphics nakreslit grafiku do vyrovnávací paměti, kterou představuje. Po provedení všech grafických operací, můžete obsah vyrovnávací paměti zkopírovat na obrazovku zavoláním metody Render.

Poznámka:

Pokud provádíte vlastní vykreslování, zvýší se spotřeba paměti, i když zvýšení může být pouze mírné.

Ruční zobrazení přebufferované grafiky

  1. Získejte odkaz na instanci třídy BufferedGraphicsContext. Další informace naleznete v tématu Jak ručně spravovat pufrovanou grafiku.

  2. Vytvořte instanci třídy BufferedGraphics voláním metody Allocate, jak je znázorněno v následujícím příkladu kódu.

    // This example assumes the existence of a form called Form1.
    BufferedGraphicsContext currentContext;
    BufferedGraphics myBuffer;
    // Gets a reference to the current BufferedGraphicsContext
    currentContext = BufferedGraphicsManager.Current;
    // Creates a BufferedGraphics instance associated with Form1, and with
    // dimensions the same size as the drawing surface of Form1.
    myBuffer = currentContext.Allocate(this.CreateGraphics(),
       this.DisplayRectangle);
    
    ' This example assumes the existence of a form called Form1.
    Dim currentContext As BufferedGraphicsContext
    Dim myBuffer As BufferedGraphics
    ' Gets a reference to the current BufferedGraphicsContext.
    currentContext = BufferedGraphicsManager.Current
    ' Creates a BufferedGraphics instance associated with Form1, and with 
    ' dimensions the same size as the drawing surface of Form1.
    myBuffer = currentContext.Allocate(Me.CreateGraphics, _
       Me.DisplayRectangle)
    
    
  3. Nakreslete grafiku do grafické vyrovnávací paměti nastavením vlastnosti Graphics. Například:

    // Draws an ellipse to the graphics buffer.
    myBuffer.Graphics.DrawEllipse(Pens.Blue, this.DisplayRectangle);
    
    ' Draws an ellipse to the graphics buffer.
    myBuffer.Graphics.DrawEllipse(Pens.Blue, Me.DisplayRectangle)
    
  4. Po dokončení všech kreslících operací do grafické vyrovnávací paměti zavolejte metodu Render pro vykreslení této vyrovnávací paměti na kreslící plochu přidruženou k této vyrovnávací paměti, nebo na specifikovanou kreslící plochu, jak ukazuje následující příklad kódu.

    // This example assumes the existence of a BufferedGraphics instance
    // called myBuffer.
    // Renders the contents of the buffer to the drawing surface associated
    // with the buffer.
    myBuffer.Render();
    // Renders the contents of the buffer to the specified drawing surface.
    myBuffer.Render(this.CreateGraphics());
    
    ' Renders the contents of the buffer to the drawing surface associated 
    ' with the buffer.
    myBuffer.Render()
    ' Renders the contents of the buffer to the specified drawing surface.
    myBuffer.Render(Me.CreateGraphics)
    
  5. Po dokončení vykreslování grafiky zavolejte metodu Dispose v instanci BufferedGraphics a uvolněte systémové prostředky.

    myBuffer.Dispose();
    
    myBuffer.Dispose()
    

Viz také