在利用DrawingVisual尽心绘图时,如果对Pen对象调用Freeze()方法,冻结对对象的修改,则可以大幅度提升绘图性能(经过实测,对2800个线段绘制,性能提升20~50倍左右)。Freeze()方法继承自Freezable对象,调用该方法后,该对象将不可以修改。
Freeze() | 使当前对象不可修改,并且将其 IsFrozen 属性设置为 |
具体使用方式如下:
DrawingVisual visual = new DrawingVisual();
using (DrawingContext dc = visual.RenderOpen())
{
Pen pen=...
pen.Freeze();
foreach (var line in lines)
{
DrawLine(pen,line.PointA,line.PointB);
}
}
因此,若无需改变Pen属性,在绘制大量图形而遇到性能瓶颈的时候,应果断调用Freeze()方法。