2

ビットマップにいくつかのアイテムを描画するコントロールがあります。

ビットマップのスクロールとパンに Microsoft ジェスチャ ライブラリを使用しています。

パンまたはスクロールを行っているときに、ビットマップがちらつきます。

OnPaintスクロール/パン座標に応じた方法でビットマップの一部だけを描画しています。

サンプルコードは次のとおりです。

protected override void OnPaint(PaintEventArgs e)
        {
            using (Graphics g = e.Graphics)
            {
                if (!_painted)
                {
                    // drawing items first time
                    InitilizeBitmap(g);                 
                    _painted = true;
                }           

                Rectangle rec = new Rectangle(0, _bitmapLocation.Y, ClientRectangle.Width, ClientRectangle.Height);
                using (Graphics gCached = Graphics.FromImage(_cachedBitmap))
                {
                    gCached.Clear(BackColor);
                    gCached.DrawImage(_bmpControl, 0, 0, rec, GraphicsUnit.Pixel);
                }

                g.DrawImage(_cachedBitmap, 0, 0);
            }
        }

        protected override void OnPaintBackground(PaintEventArgs e)
        {

        }

ちらつきを避ける方法はありますか?

4

1 に答える 1

1

問題は、1 つのバッファーしか使用していないため、描画操作がすぐに表示されることです。必要なのはページ フリッピング/ダブル バッファリングです。

やりたいことは、すべての描画を行う新しいグラフィックス オブジェクトをセットアップし、それが完了したら完成したオブジェクトを描画することです。画面に面しているビットマップは一度だけ更新されるため、ちらつきがなくなります。

于 2012-08-21T14:20:04.377 に答える