我正在尝试在我的面板上绘制一些矩形,然后让它们掉下来,但由于我的程序需要重新绘制背景和每个矩形每次循环时fps正在下降很多,当我添加很多矩形。
这是我绘制所有矩形的代码:
frameGraphics.FillRectangles(Red, rectlist.ToArray());
还有其他方法可以加快速度吗?因为rectlist.toarray()包含大约400-500个矩形。
我正在使用winforms:
Graphics g = Canvas.CreateGraphics(); where canvas is my panel.
Bitmap frame = new Bitmap(Game.CANVAS_WIDTH, Game.CANVAS_HEIGHT);
Graphics frameGraphics = Graphics.FromImage(frame);
这就是我构建图形的方式。
答案 0 :(得分:1)
Winform正在使用Gdi +,它在实际绘图过程中会锁定很多。因此它限制了绘图速度。我想有几种选择。
使用XNA + Winform。你可以查看这篇文章的detial。这几乎没有增强功能。 http://www.dreamincode.net/forums/topic/338422-xna-and-winforms/ https://gamedev.stackexchange.com/questions/54998/winform-xna-microsoft-example-issues-with-drawing-texture2d
尝试其他工具包,如SlimX或Direct3D,这将比Gdi +更快。
强烈建议您使用Wpf,您可以创建形状并动态更改其位置,这样您就不需要处理渲染部分。