0

我正在用 Visual Studio Express [C#] 编写一个应用程序,我需要同时实时显示 12 个 ColorGrids [128 x 128]。

这就是我设置图表的方式:

        tChart1.Aspect.View3D = false;
        tChart1.Aspect.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed;
        tChart1.Legend.Visible = false;
        tChart1.Axes.Bottom.Title.Text = "R";
        tChart1.Axes.Bottom.SetMinMax(0, 127);
        tChart1.Axes.Bottom.Increment = 20;
        tChart1.Axes.Left.Title.Text = "D";
        tChart1.Axes.Left.SetMinMax(0, 127);

然后我像这样初始化 ColorGrid:

        for (int d = 0; d < 128; d++)
        {
            for (int r = 0; r < 128; r++)
            {
                ColorGrid.Add(r, 0, d);
            }
        }

然后,我所做的只是在一些覆盖整个 128 x 128 范围的 for 循环中实时更新 YValues:

        ColorGrid.YValues[index] = value;

在 for 循环之后,我调用:

        ColorGrid.BeginUpdate();
        ColorGrid.EndUpdate();

我目前有 12 个 TChart 控件,它们一起显示在一个窗体上。

我还尝试将 12 个图表组合成一个大图表,将 12 个图表绘制为 6 x 2 “子图”图表,这只会产生很小的性能差异。

有没有办法通过以下方式获得 10+fps:

要么是 12 个单独的 [128 x 128] 图,要么是一个 [128*6 x 128*2] 图???

如果我有任何不清楚的地方,请告诉我:-)

谢谢

京东

4

1 回答 1

1

改善 ColorGrid 绘制时间是 Steema 的愿望清单中已经存在的功能请求 (TF02016286)。

另请注意,一般来说,随着要绘制的图表的更多点和元素(网格线、渐变等),绘制图表需要更多时间。所以我不确定它是否可以改进到您需要的程度。

我没有在您的示例中看到实现的提示是隐藏 ColorGrid Pen。这提高了一点性能:

ColorGrid.Pen.Visible = false;

另请注意ColorGrid.BeginUpdate(),并被ColorGrid.EndUpdate()认为在分别清除和重新填充系列之前和之后调用,而不是同时调用和修改系列值之后。

于 2013-01-16T15:10:48.140 回答