十年前,我制作了一个简单的俄罗斯方块游戏来学习.NET和WinForms。我创建了一个由标签控件组成的10×30网格。这些标签链接到一个ImageList,其中包含每个块的图像。几周前,我的朋友们要求为局域网派对提供一个俄罗斯方块游戏,所以我拿起了我的俄罗斯方块游戏,我复制了网格和标签,以支持10个玩家。
游戏核心运行得很完美。然而,有3000多个标签,渲染开始困难。
下面是我的问题:有什么方法可以改善我的应用程序的呈现吗?
我可以为其他用户控件替换标签,但我希望避免陷入DirectX / OpenGL绘图(即使这是最好的解决方案,我也没有足够的时间去研究学习曲线)
发布于 2014-02-12 20:37:36
这是一个非常缓慢的方式,你不能真的期望它执行得很快。您可以做的是只使用一个控制,而不是数千-它将作为一个绘图画布。
您应该重写控件上的on画图事件,并以这种方式绘制游戏状态。您将在事件args中找到一个图形对象,并且使用像FillRectangle这样的函数,您应该能够绘制所有的东西。
虽然这也会导致一些闪烁,但WinForms最初并不打算用于这类东西--但对于您的情况来说应该是可以的。
我还理解这会改变您的概念,并且需要进行大量的编码更改,但它比directx / opengl路由容易得多。
祝好运!
发布于 2014-02-13 06:53:39
窗体上的每个控件都有自己的句柄,并被视为单独的窗口。窗口不会很好地处理大量的控件(在窗口方面,WPF不对每个控件使用单独的窗口句柄,而是对整个窗口使用一个)。
3000+控件不是一个好主意,您也知道这一点,但是让我们尝试应用一个创可贴,尽管我们对您的应用程序知之甚少!
https://stackoverflow.com/questions/21738926
复制相似问题