方法: バッファリングされたグラフィックスを手動で描画する

独自のバッファリングされたグラフィックスを管理している場合は、グラフィックス バッファーを作成して表示できるようにする必要があります。 Allocate メソッドを呼び出すことで、画面の描画サーフェイスに関連付けられている BufferedGraphics クラスのインスタンスを作成できます。 このメソッドは、フォームやコントロールなど、特定の表示サーフェイスに関連付けられている BufferedGraphics インスタンスを作成します。 BufferedGraphics インスタンスを作成した後、Graphics プロパティを通じて表すバッファーにグラフィックスを描画することができます。 グラフィックスのすべての操作を実行した後で、Render メソッドを呼び出すことで、バッファーの内容を画面にコピーできます。

注意

独自の表示を実行する場合、わずかですがメモリ消費量が増加します。

バッファリングされたグラフィックスを手動で描画するには

  1. BufferedGraphicsContext クラスのインスタンスへの参照を取得します。 詳細については、「方法 : バッファーリングされたグラフィックスを手動で管理する」を参照してください。

  2. 次のコード例に示すように、Allocate メソッドを呼び出して BufferedGraphics クラスのインスタンスを作成します。

    // 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. Graphics プロパティを設定することで、グラフィックスのバッファーにグラフィックスを描画します。 次に例を示します。

    // 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. グラフィックス バッファーへのすべての描画操作が完了したら、次のコード例に示すように、Render メソッドを呼び出して、そのバッファーに関連付けられている描画サーフェイス、または指定された描画サーフェイスのいずれかにバッファーを表示します。

    // 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. グラフィックのレンダリングが完了した後、BufferedGraphics インスタンスの Dispose メソッドを呼び出し、システム リソースを解放します。

    myBuffer.Dispose();
    
    myBuffer.Dispose()
    

関連項目