WPF DrawLine性能问题

时间:2015-04-16 10:56:34

标签: c# wpf drawing line draw

我需要在我的项目中绘制大约12.000行。当我使用WinForms时,感谢pictureBox的e.Graphics.DrawLine函数,很好。但是,当我将项目迁移到WPF时 - 我有点新的 - 我决定使用画布,并在其上画儿童线。事实证明这是最不充分的方法。但我只是不能成功的其他方法。这是我用来在画布上画线的功能:

public void DrawLine(int x, int y1, int y2, System.Drawing.Color color)
{
            Line top = new Line();
            top.Stroke = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B));
            top.StrokeThickness = 5;

            top.X1 = x;
            top.Y1 = y1;
            top.X2 = x;
            top.Y2 = y2;

            Canvas.SetTop(top, 0);
            Canvas.SetLeft(top, 0);
            scanCanvas.Children.Add(top);
}

当我尝试使用秒表对我的整体绘制功能进行基准测试时,它表示只有300个经过的时间,这似乎很好。但我在屏幕上看到的延迟大约2-3秒。如何在画布上绘制线条比这更快?

2 个答案:

答案 0 :(得分:1)

然后你应该使用DrawingVisual Class

DrawingVisual是一个轻量级绘图类,用于渲染形状,图像或文本。此类被视为轻量级,因为它不提供布局,输入,焦点或事件处理,从而提高了性能。因此,图纸非常适合背景和剪贴画。

答案 1 :(得分:0)

查看使用StreamGeometry并冻结所有内容。在WPF中绘图非常非常慢。