如何:枚举 Visual 的绘图内容

Drawing 对象提供一个对象模型来枚举 Visual 的内容。

示例

以下示例使用 GetDrawing 方法检索 VisualDrawingGroup 值并枚举它。

注意

在枚举可视化层的内容时,就是相当于在检索 Drawing 对象,而不是以矢量图形指令列表形式检索呈现数据的基础表示。 有关详细信息,请参见 WPF 图形绘制概述

public void RetrieveDrawing(Visual v)
{
    DrawingGroup drawingGroup = VisualTreeHelper.GetDrawing(v);
    EnumDrawingGroup(drawingGroup);
}

// Enumerate the drawings in the DrawingGroup.
public void EnumDrawingGroup(DrawingGroup drawingGroup)
{
    DrawingCollection dc = drawingGroup.Children;

    // Enumerate the drawings in the DrawingCollection.
    foreach (Drawing drawing in dc)
    {
        // If the drawing is a DrawingGroup, call the function recursively.
        if (drawing is DrawingGroup group)
        {
            EnumDrawingGroup(group);
        }
        else if (drawing is GeometryDrawing)
        {
            // Perform action based on drawing type.
        }
        else if (drawing is ImageDrawing)
        {
            // Perform action based on drawing type.
        }
        else if (drawing is GlyphRunDrawing)
        {
            // Perform action based on drawing type.
        }
        else if (drawing is VideoDrawing)
        {
            // Perform action based on drawing type.
        }
    }
}

另请参阅