使用DrawingGroup进行高效绘图

时间:2017-10-25 11:27:35

标签: c# wpf drawing

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

1 个答案:

答案 0 :(得分:0)

感谢@Clemens的评论,我必须使用_backingStore.Append();代替以保留以前的图纸。