2012-04-22 84 views
0

我正在製作遊戲,並且必須在每個Timer計時器上重新繪製大約40個對象。我有大約7個不同的Draw類(Picturebox^pictureBox)方法。正如你看到的,我爲每個對象繪製方法傳遞了pictureBox指針。由於對象太多,也許會多一點,pictureBox閃爍,因爲它繪製對象之後的每個對象。有沒有簡單的方法來解決閃爍問題?也許以某種方式準備圖像,然後在PictureBox上顯示它?Visual Studio修復PictureBox閃爍(C++)

回答

1

7類不同的繪製(圖片框PictureBox的^)方法

該簽名是很容易讓人產生閃爍。因爲爲了利用內置在PictureBox中的雙緩衝區,您的也有也傳遞一個Graphics對象。你從Paint事件中獲得的一個。您現在可能正在使用CreateGraphics(),這是一個嚴重的閃爍錯誤。

正確的簽名是Draw(繪圖^圖形),像這樣使用:

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控件的假設。

+0

謝謝你的回答。我會試試這個:) – 2012-04-22 13:42:40