私はゲームを作成していますが、Timer tick ごとに約 40 個のオブジェクトを再描画する必要があります。Draw(Picturebox ^ pictureBox) メソッドが異なる約 7 つのクラスがあります。ご覧のとおり、各オブジェクト描画メソッドに pictureBox ポインターを渡します。オブジェクトが非常に多く、おそらくもう少し増えると、pictureBox がちらつきます。これは、オブジェクトを次々と描画するためです。ちらつきを修正する簡単な方法はありますか?どうにかして画像を準備し、それを PictureBox に表示しますか?
1 に答える
1
Draw(Picturebox ^ pictureBox) メソッドが異なる 7 つのクラス
その署名は、ちらつきを作成する可能性が非常に高いです。PictureBox に組み込まれているダブル バッファリングを利用するには、Graphics オブジェクトも渡す必要があるためです。Paint イベントで入手したもの。あなたはおそらく CreateGraphics() を現在使用していますが、これは深刻なちらつきのバグです。
適切な署名は Draw(Graphics^ graphics) で、次のように使用されます。
private:
void pictureBox1_Paint(Object^ sender, PaintEventArgs^ e) {
for each (GameObject^ obj in gameObjects) {
obj->Draw(e->Graphics);
}
}
void timer1_Tick(Object^sender, EventArgs^ e) {
updateGame(); // move stuff around
pictureBox1->Invalidate(); // redraw scene
}
PictureBox コントロールと Timer コントロールのイベント ハンドラーを追加したと仮定します。
于 2012-04-22T12:03:04.717 に答える