我需要在我的项目中绘制大约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秒。如何在画布上绘制线条比这更快?
答案 0 :(得分:1)
然后你应该使用DrawingVisual Class。
DrawingVisual是一个轻量级绘图类,用于渲染形状,图像或文本。此类被视为轻量级,因为它不提供布局,输入,焦点或事件处理,从而提高了性能。因此,图纸非常适合背景和剪贴画。
答案 1 :(得分:0)
查看使用StreamGeometry并冻结所有内容。在WPF中绘图非常非常慢。