4

winforms(C#および.netframework 2.0)でテトリスのようなゲームを開発しています。winform には、500ms 間隔で下に移動する (新しい場所が割り当てられる) 背景画像と画像ボックスがあります。

問題は、ピクチャボックスがフォームの背景画像を下に移動すると、ピクチャボックスが以前に配置されていたポイントでちらつきます。背景画像を使用しない場合、ちらつきはありません。

ちらつきの問題を解決できるグラフィック アクセラレータまたは任意の種類のソリューションはありますか。

4

3 に答える 3

3

Windowsフォームでゲームを開発している場合は、重いPictureBoxコントロールを移動するのではなく、OnPaintをオーバーライドして、すべてのフレームにスプライトのペイントを実装する必要があります。

前述のアプローチを使用すると、DoubleBufferに関係なくちらつきが発生する可能性があります。ただし、すべての描画がOnPaintで行われると、DoubleBufferが機能し始めます。

クイック検索を行ったところ、OnPaintオーバーライドを使用してWindowsフォームでゲームループを作成することに関するこの興味深い記事を見つけました。特に、GameStateDrawerグラフィックスコンテキストに直接レンダリングするのはどれかを見てください。

于 2012-05-24T09:52:32.670 に答える
3

これに使用される用語は ですDouble Buffering。アイデアは単純です - 2 つのペインから始めて、1 つだけを表示します。非表示のペインに描画し、非表示のペインと表示されているペインをすばやく入れ替えます。トランジションごとにすすぎ、繰り返します (アニメーション)。

幸いなことに、.NET でこれを行う必要はありません。コントロールによって処理されます。この SO の質問が役に立ちます:フォーム上の .NET コントロールをダブル バッファリングする方法は?

于 2012-05-24T08:18:18.943 に答える
3

コントロールに設定DoubleBuffered = trueします。これにより、ちらつきを防ぐことができます。

DoubleBufferedプロパティのドキュメントについては、 http:
//msdn.microsoft.com/en-us/library/system.windows.forms.control.doublebuffered.aspxを参照してください。

于 2012-05-24T08:16:43.007 に答える