2017-10-25 4 views
0

Wie zeichne ich mit DrawingGroup teilweise?Effizientes Zeichnen mit DrawingGroup

Hier ist, was ich tun möchte. Ich möchte zuerst einige einleitende Elemente zeichnen.

private readonly DrawingGroup _backingStore = new DrawingGroup(); 

protected override void OnRender(DrawingContext dc) 
{ 
    base.OnRender(dc); 
    InitialRender(); 
    dc.DrawDrawing(_backingStore); 
} 

private void InitialRender() 
{ 
    var dc = _backingStore.Open(); 
    // draw with draw context. 
    _backingStore.Close(); 
} 

Initial Render funktioniert gut. Jetzt, wenn sich die Sammlungsquelle ändert, möchte ich mehr Elemente auf vorhandenen Zeichnungen zeichnen.

Das Problem ist, dass wenn ich Zeichnungsgruppe öffnen, um Zeichnungskontext zu bekommen, alles gelöscht wird (und nur neue Zeichnungen bleiben).

private void ValueOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs args) 
{ 
    Render(args.NewItems); 
} 

private void Render(IList newItems) 
{ 
    var dc = _backingStore.Open(); // how to avoid clearing previous items? 
    // draw more stuff 
    dc.Close(); 
} 
+1

Haben Sie versucht, der Children-Kollektion der DrawingGroup einfach eine neue Zeichnung hinzuzufügen (oder einzufügen)? – Clemens

Antwort

0

Dank @Clemens für seinen Kommentar, ich habe _backingStore.Append(); statt, um vorherige Zeichnungen zu halten zu verwenden.

Verwandte Themen