天天看點

Pen.Freeze()方法能夠有效提升WPF中DrawingVisual的繪圖性能

在利用DrawingVisual盡心繪圖時,如果對Pen對象調用Freeze()方法,當機對對象的修改,則可以大幅度提升繪圖性能(經過實測,對2800個線段繪制,性能提升20~50倍左右)。Freeze()方法繼承自Freezable對象,調用該方法後,該對象将不可以修改。

Freeze() 使目前對象不可修改,并且将其 IsFrozen 屬性設定為

true

(Inherited from Freezable)

具體使用方式如下:

      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()方法。

繼續閱讀