0

我正在使用 C# 编写一个小游戏。事实上,它只需要根据鼠标位置在用户每次移动鼠标时(或每 n 毫秒)绘制一个圆圈。问题是,我必须每隔一段时间重新绘制整个图片框。我知道有 .Invalidate() 和 .Refresh() 选项,但似乎我每次需要重绘某些东西时都需要重新创建 Graphics 对象,这种情况每秒都会发生。

private void redrawCircles(int distance)
{
            prevdist = distance / 5;
            g = Graphics.FromImage(pictureBox1.Image);
            for (int i = 0; i < n - 1; i++)
            {
                brushes[i] = brushes[i + 1];
            }
            brushes[n - 1] = BrushFromDistance(distance);
            for (int i = 0; i < n; ++i)
            {
                g.FillEllipse(brushes[i], startX + i * rad, startY + i * rad, 2 * diag - 2 * i * rad, 2 * diag - 2 * i * rad);
            }
            g.Dispose();

            pictureBox1.Refresh();
}

其中 g 是:公共静态 System.Drawing.Graphics g;

在 MouseMove 事件处理程序中调用 redrawCircles,我打算在 Timer.Tick 事件处理程序中调用它。所以它经常被调用。重新创建 Graphics 对象似乎无效。在那种情况下我真的需要重新创建 Graphics 对象还是有更简单的方法?

4

0 回答 0