使用framegraphics绘制多个矩形而不使用fps

时间:2014-05-13 08:14:49

标签: c# winforms

我正在尝试在我的面板上绘制一些矩形,然后让它们掉下来,但由于我的程序需要重新绘制背景和每个矩形每次循环时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);

这就是我构建图形的方式。

1 个答案:

答案 0 :(得分:1)

Winform正在使用Gdi +,它在实际绘图过程中会锁定很多。因此它限制了绘图速度。我想有几种选择。

  1. 使用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

  2. 尝试其他工具包,如SlimX或Direct3D,这将比Gdi +更快。

  3. 强烈建议您使用Wpf,您可以创建形状并动态更改其位置,这样您就不需要处理渲染部分。