WPF DrawingContext:如何在绘制新内容时保留现有内容?

时间:2015-10-31 04:09:46

标签: c# wpf geometry drawingcontext

我有一个DrawingVisual,想要画一棵葡萄树,然后在屏幕上显示,然后画一只狐狸。像这样:

public class Gif : DrawingVisual
{
    void Draw_Geometry(Geometry geo)
    {
        using (DrawingContext dc = RenderOpen())
        {
            dc.DrawGeometry(Brushes.Brown, new Pen(Brushes.Brown, 0), geo);
        }
    }

    void Draw_Grape ()
    {
        Draw_Geometry(grape);
    }

    void Draw_Fox ()
    {
        Draw_Geometry(fox);
    }
}

问题是在致电Draw_Fox ()时,DrawingContext自动清除现有葡萄树。所以我想问一下在绘制新几何体时如何保留现有的绘图内容?谢谢!

1 个答案:

答案 0 :(得分:2)

来自文档:

  

当您调用DrawingContext的Close方法时,当前绘图内容将替换为DrawingVisual定义的任何先前绘图内容。这意味着无法将新绘图内容附加到现有绘图内容。

我觉得这很清楚。不可能按字面意思做你所要求的。打开渲染的视觉效果将始终以新渲染取代之前的任何内容。

如果要追加当前渲染,则需要明确包含它。例如:

select kills, name from table where Kills in (select distinct Kills from table order by Kills desc limit 5)