2017-10-25 20 views
0

DrawingGroupで部分的に描画する方法は?効率的なDrawing with DrawingGroup

ここは私がしたいことです。最初の要素を最初に描きたい。

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(); 
} 

初期レンダリングが正常に動作します。コレクションソースが変更されたときに、既存の図面にさらに多くの要素を描画したいと考えています。

問題は、描画コンテキストを取得するために図面を開くときに、すべてがクリアされ、新しい図面のみが残ってしまうという問題です。彼のコメントを@Clemensへ

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

DrawingGroupのChildrenコレクションに新しいDrawingを追加(または挿入)しようとしましたか? – Clemens

答えて

0

おかげで、私は前の図面を維持するために、代わりに_backingStore.Append();を使用する必要があります。