4

我有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自动清除现有的葡萄树。所以想问一下在绘制新几何体时如何保留现有的绘图内容?感谢!

4

1 回答 1

2

从文档中:

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

我觉得这很清楚。按照你的要求做是不可能的。打开视觉进行渲染总是会以新的渲染取代之前的渲染。

如果要附加当前渲染,则需要显式包含它。例如:

void Draw_Geometry(Geometry geo)
{
    using (DrawingContext dc = RenderOpen())
    {
        dc.DrawDrawing(Drawing);
        dc.DrawGeometry(Brushes.Brown, new Pen(Brushes.Brown, 0), geo);
    }
}
于 2015-10-31T07:19:43.313 回答