.Net Compact Framework では Control.SetStyle メソッドがサポートされていないため、ダブル バッファリングを有効にするここができない。
× SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
そこで、チラつきを軽減させる方法を調べたところ
- 空の Bitmap クラスを作成する
- 1.で作成した Bitmap オブジェクトへ描画を行う
- この Bitmap オブジェクトを表示する
要は表示したいイメージを作成しておいて、それを一気に表示させるってことかな。
■サンプル
protected override void OnPaint(PaintEventArgs e)
{
using (Bitmap bmp = new Bitmap(this.ClientSize.Width, this.ClientSize.Height))
{
using (Graphics g = Graphics.FromImage(bmp))
{
// 描画処理を行う
}
e.Graphics.DrawImage(bmp, 0, 0);
}
base.OnPaint(e);
}
#そう言えば昔 VC++ でコントロールを作成してる時にも同じようなことをしていたような気がする。
あ、あれ?チラつくぞ?
少し、描画処理に時間がかかるとやっぱりチラつく。
もっと読む...
Programing
c#, windows mobile
Permalink