【问题标题】:Efficient drawing with DrawingGroup使用 DrawingGroup 进行高效绘图
【发布时间】:2017-10-25 20:03:25
【问题描述】:

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

【问题讨论】:

  • 您是否尝试简单地将新绘图添加(或插入)到 DrawingGroup 的 Children 集合?

标签: c# wpf drawing


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-08-10
    • 2012-09-20
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    相关资源
    最近更新 更多