2012-05-24 66 views
4

我正在開發一個類似於winforms的遊戲(C#和.netframework 2.0)。 winform有一個背景圖片和一個以500ms爲間隔向下移動(新位置)的圖片框。遊戲開發 - 避免閃爍

問題是當圖片框在圖片框較早位置的位置向下移動表格的背景圖片時閃爍。如果我不使用任何背景圖像,那麼沒有閃爍。

是否有任何圖形加速器或任何類型的解決方案,使用它可以解決閃爍問題。

回答

3

用於這一術語是Double Buffering。這個想法很簡單 - 從2個窗格開始,但只顯示一個窗格。繪製到隱藏窗格,並快速交換隱藏和可見窗格。沖洗並重復每個過渡(動畫)。

幸運的是,你不必在.NET中處理這個問題的細節,控件會爲你做。這個SO問題將幫助你:How to double buffer .NET controls on a form?

3

如果你正在Windows窗體中開發遊戲,你應該重寫OnPaint並在每一幀上實現精靈的繪畫,而不是移動重量級的PictureBox控件。

如果使用您提到的方法,您會發現無論DoubleBuffer如何,您都可能會閃爍。但是,在OnPaint中完成所有繪圖之後,DoubleBuffer開始工作。

我做了一個快速搜索,發現這個有趣的文章creating a game-loop in Windows Forms使用OnPaint覆蓋。特別看看GameStateDrawer,它直接渲染圖形上下文。

+0

你的建議是正確的,我使用雙緩衝後仍然閃爍。謝謝。 –

+0

是的:)在切換到WPF之前,我在WinForms圖形控件上工作了大約5年。使用雙緩衝的OnPaint方法。您將需要創建一個粗略的遊戲引擎來在特定位置繪製小精靈。它會工作! –