0

標準のグラフィックスに加えて、より高度なグラフィックスを使用しようとしています。私の試みの1つは、いくつかの便利なコントロール、つまりノブを作成することでした。画像には値1〜100のノブが10​​0個含まれており、プロジェクトでは、画像をビットマップ配列に分割して、各値(1〜100)のビットマップを含めています。

これは、ある値に対するノブの外観です。値は、マウスを押したまま上下にドラッグすることで変更できます。

つまみ

私のテクニックは、値が変更されるたびに、ControlオブジェクトであるKnobのBackgroundImageプロパティが、ビットマップ配列の「Value」インデックスにある画像に変更されることです。つまり、ビットマップ配列X、値V、ノブKがある場合は、K.BackgroundImage = X[V]。このアクションは、値が変更されるたびに繰り返されます。

問題は次のとおりです。実行時に値を増減すると、画像の変更中にノブが「点滅」するようになります。これは私のテクニックが良くないと思うように私を導きます、そして私はそれをするより良い方法があるかどうか知りたいです。

*ノブのデザインは私のものではなく、インターネットで見つけたものです。

4

1 に答える 1

1

UserControl またはある種の Control 派生サブクラスがあることを前提として説明します。そうでない場合は、そうしてください...

あなたがそれに取り組んでいる間に、この素​​晴らしい記事を読んでください: http://www.codeproject.com/Articles/12870/Don-t-Flicker-Double-Buffer

OnPaint要するに、オーバーライドでペイントを実行し、コンストラクターで次のことを行います。

    SetStyle(
        ControlStyles.UserPaint |
        ControlStyles.AllPaintingInWmPaint |
        ControlStyles.OptimizedDoubleBuffer, true);

これでちらつきが修正されるはずです。

于 2013-02-22T22:27:21.547 に答える