Image Visual Studio修复图片框闪烁(C+;+;)

Image Visual Studio修复图片框闪烁(C+;+;),image,c++-cli,picturebox,flicker,Image,C++ Cli,Picturebox,Flicker,我正在做一个游戏,我必须在每个计时器上重新绘制大约40个对象。我有大约7个不同画法的类(Picturebox^Picturebox)。如您所见,我为每个对象绘制方法传递pictureBox指针。由于对象太多,可能还会多一点,pictureBox会闪烁,因为它会一个接一个地绘制每个对象。有没有简单的方法来修复闪烁?也许可以先准备好图像,然后在图片盒上显示 7个具有不同绘制方法的类(Picturebox^ Picturebox) 这个签名很可能会产生闪烁。因为为了利用PictureBox内置的双缓冲

我正在做一个游戏,我必须在每个计时器上重新绘制大约40个对象。我有大约7个不同画法的类(Picturebox^Picturebox)。如您所见,我为每个对象绘制方法传递pictureBox指针。由于对象太多,可能还会多一点,pictureBox会闪烁,因为它会一个接一个地绘制每个对象。有没有简单的方法来修复闪烁?也许可以先准备好图像,然后在图片盒上显示

7个具有不同绘制方法的类(Picturebox^ Picturebox)

这个签名很可能会产生闪烁。因为为了利用PictureBox内置的双缓冲,还必须传递图形对象。你从油漆事件中得到的那个。您现在可能正在使用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控件添加了事件处理程序。

谢谢您的回答。我会试试这个:)