使用 DrawingGroup 高效绘图

Efficient drawing with DrawingGroup

如何使用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();
}

初始渲染工作正常。现在,当集合来源发生变化时,我想在现有图纸上绘制更多元素。

问题是当我打开绘图组获取绘图上下文时,所有内容都被清除(只剩下新绘图)。

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

感谢@Clemens 的评论,为了保留以前的图纸,我不得不使用 _backingStore.Append();