如何在0.5秒内用WPF画出数万个点?

21 c# wpf performance templates itemscontrol

我正在编写WPF代码来显示实时情节,这是一条包含大约10,000点的连线.在我的电脑中显示图片大约需要5秒钟.有没有人有想法让它更快,并在0.5秒内?

class eee : FrameworkElement
{

    public eee()
    {
        _children = new VisualCollection(this);
        Random rand = new Random();
        DrawingVisual dv = new DrawingVisual();
        using (DrawingContext dx = dv.RenderOpen())
        {
            Pen drawingPen = new Pen(Brushes.Black, 1);
            double x=rand.Next(300);
            double y = rand.Next(300);
            for (double i = 0; i < 1000; i = i + 0.1)
            {
                y = 100 + rand.Next(100);
                dx.DrawLine(drawingPen, new Point(i, x), new Point(i + 1, y));
                x = y;
            }
        }
         _children.Add(dv);
    }
Run Code Online (Sandbox Code Playgroud)

Ran*_*e42 38

Charles Petzold正是这样做的.它在我的主机上更快(<0.3秒),而且点数甚至是DataBound !! ;)

Tamir Khason也做了这一点,并在这里更深入地介绍了Bitmap风格的性能WPF .

Rico Mariani对3D高性能图形有一些指导,基本上利用值类型可以提高您的吞吐量,如果经过深思熟虑.

张建中在这个主题上给出了我最喜欢的新教程,3D散点图数以万计的数据点动画和交互.