Share via


ダブル バッファリングされたグラフィックス

更新 : 2007 年 11 月

グラフィックスをプログラミングするときは、ちらつきが一般的な問題になります。複数の複雑な描画操作を必要とするグラフィックス操作を実行すると、描画されたイメージがちらつきなどによって適切に表示されないことがあります。このような問題に対処するために、.NET Framework では、ダブル バッファリングを利用できます。

ダブル バッファリングでは、メモリ バッファを使用して、複数の描画操作に関連するちらつきの問題に対処します。ダブル バッファリングを有効にすると、すべての描画操作が画面上の描画サーフェイスではなく、最初にメモリ バッファに描画されます。描画操作がすべて完了すると、メモリ バッファが、関連付けられている描画サーフェイスに直接コピーされます。画面上で実行されるグラフィックス操作は 1 つだけなので、複雑な描画操作に関連するイメージのちらつきが解消されます。

既定のダブル バッファリング

アプリケーションでダブル バッファリングを使用するには、.NET Framework に用意されている、フォームやコントロールに対する既定のダブル バッファリングを使用するのが最も簡単です。Windows フォームや作成した Windows コントロールに対して既定のダブル バッファリングを有効にするには、DoubleBuffered プロパティを true に設定するか、SetStyle メソッドを使用します。詳細については、「方法 : フォームとコントロールのダブル バッファリングを行うことによってグラフィックスのちらつきを軽減する」を参照してください。

バッファリングされたグラフィックスの手動管理

アニメーションや高度なメモリ管理など、より高度なダブル バッファリングのシナリオでは、.NET Framework クラスを使用して独自のダブル バッファリング ロジックを実装できます。個々のグラフィックス バッファの割り当てと管理を担当するクラスは BufferedGraphicsContext クラスです。各アプリケーション ドメインには、そのアプリケーションの既定のダブル バッファリングをすべて管理する、それぞれ独自の既定の BufferedGraphicsContext インスタンスがあります。多くの場合、アプリケーションごとに存在するアプリケーション ドメインは 1 つだけなので、通常、アプリケーションごとに 1 つの既定の BufferedGraphicsContext があります。既定の BufferedGraphicsContext インスタンスは、BufferedGraphicsManager クラスによって管理されます。既定の BufferedGraphicsContext インスタンスへの参照を取得するには、BufferedGraphicsManager.Current プロパティを呼び出します。また、専用の BufferedGraphicsContext インスタンスを作成して、グラフィックス重視のアプリケーションのパフォーマンスを向上させることもできます。BufferedGraphicsContext インスタンスの作成方法については、「方法 : バッファリングされたグラフィックスを手動で管理する」を参照してください。

バッファリングされたグラフィックスの手動表示

BufferedGraphicsContext クラスのインスタンスを使用して BufferedGraphicsContext.Allocate メソッドを呼び出すと、グラフィックス バッファを作成できます。このメソッドは、BufferedGraphics クラスのインスタンスを返します。BufferedGraphics オブジェクトは、フォームやコントロールなどの描画面に関連付けられたメモリ バッファを管理します。

インスタンス化された BufferedGraphics クラスは、メモリ内のグラフィックス バッファへの描画を管理します。グラフィックスは、BufferedGraphics.Graphics プロパティを通じてメモリ バッファに描画できます。このプロパティは、メモリ バッファを直接表す Graphics オブジェクトを公開します。この Graphics オブジェクトには、描画サーフェイスを表す Graphics オブジェクトに描画する場合と同じように描画できます。すべてのグラフィックスをバッファに描画すると、BufferedGraphics.Render メソッドを使用して、バッファの内容を画面上の描画サーフェイスにコピーできます。

BufferedGraphics クラスの使い方の詳細については、「方法 : バッファリングされたグラフィックスを手動で描画する」を参照してください。グラフィックスの描画の詳細については、「Windows フォームにおけるグラフィックスと描画」を参照してください。

参照

処理手順

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

方法 : フォームとコントロールのダブル バッファリングを行うことによってグラフィックスのちらつきを軽減する

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

参照

BufferedGraphics

BufferedGraphicsContext

BufferedGraphicsManager

その他の技術情報

Windows フォームにおけるグラフィックスと描画