游戏开发 - 避免忽明忽暗(Game Development - Avoiding Flickers

2019-09-17 11:06发布

我正在开发中的WinForms像游戏中的俄罗斯方块(C#和.netframework 2.0)。 在WinForm具有背景图像和图片框,其向下移动(新位置被分配)在500毫秒的间隔。

当画面框,其中所述图片框较早位于点下移形式闪烁的背景图片的问题。 如果我不使用任何背景图片,那么就没有闪烁。

是否有任何图形加速器或任何形式的使用,其闪烁的问题是可以解决的解决方案。

Answer 1:

用于这一术语是Double Buffering 。 这个想法很简单 - 先从2个窗格,但只显示一个。 画一个隐藏的窗格,并迅速交换隐藏和可见的窗格。 冲洗和重复每一个过渡(动画)。

幸运的是,你不必处理.NET中的螺母和螺栓这样,控制为你做它。 这太问题可以帮助你: 如何在窗体上双缓冲.NET控件?



Answer 2:

设置DoubleBuffered = true在你的控制。 这将有助于防止闪烁。

有关文档DoubleBuffered属性,在这里看到:
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.doublebuffered.aspx



Answer 3:

如果您正在开发Windows中的游戏窗体你真的应该是压倒一切的OnPaint和每一帧执行精灵的绘画,而不是移动重量级的PictureBox控件。

你会发现,你可能会闪烁,无论双缓冲的,如果你使用你所提到的方法。 然而,与所有在OnPaint中绘制完成,然后双缓冲开始工作。

我做了快速搜索,发现这个有趣的文章上创建Windows窗体游戏循环使用的OnPaint覆盖。 特别是看看GameStateDrawer直接做渲染图形上下文。



文章来源: Game Development - Avoiding Flickers