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 に答える