Visual Basic PictureBox面板闪烁

时间:2015-04-20 22:31:35

标签: vb.net visual-studio-2013 graphics panel flicker

我正在制作一个简单的游戏(对于主要部分)由一个面板组成,其中包含32个PictureBoxes的网格,每个都有一个BackgroundImage。你点击" tile"它翻转了一张照片。我的问题是,当Form Loads时,我可以看到它的绘图。我看到Panel ..然后空的PictureBoxes,最后它用BackgroundImages填充PictureBoxes。

我已将DoubleBuffer变为True表格,我还添加了以下内容:

Private Sub UseDoubleBuffer()

    Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.DoubleBuffer, True)
    Me.UpdateStyles()

End Sub

表格加载时我打电话给我。我不确定我还能做什么?我希望它只是“流行”。到屏幕上。为什么DoubleBuffer不工作?我是否需要手动编写面板代码?我试图避免这种情况,因为它只是拖放到表单中显然更容易,但如果我需要,我会。

我显然不能发布截图,因为我的代表还不够高,但相信我,它看起来很可怕,我确实希望尽可能让它变得光滑。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试创建无闪烁的自定义面板控件:

以下是使用此控件的步骤: 1.在C#应用程序中添加新类“NonFlickerPanel”。 2.用下面显示的C#代码替换自动生成的类代码。 3.在应用程序中使用NonFlickerPanel对象而不是Panel对象。

public partial class NonFlickerPanel : Panel
{
   public NonFlickerPanel() : base()
   {
          this.SetStyle(ControlStyles.AllPaintingInWmPaint,
                              ControlStyles.UserPaint 
                              ControlStyles.OptimizedDoubleBuffer, 
                              true);
   }
}

答案 1 :(得分:-1)

尝试使图片框不可见(.visible = false),直到它们全部加载,然后将所有图片框的可见设置为true。