private void CloneVisualTree(ContainerVisual parent, Visual old) { DrawingVisual visual = new DrawingVisual(); parent.Children.Add(visual); visual.Clip = VisualTreeHelper.GetClip(old); visual.Offset = VisualTreeHelper.GetOffset(old); visual.Transform = VisualTreeHelper.GetTransform(old); visual.Opacity = VisualTreeHelper.GetOpacity(old); visual.OpacityMask = VisualTreeHelper.GetOpacityMask(old); #pragma warning disable 0618 visual.BitmapEffectInput = VisualTreeHelper.GetBitmapEffectInput(old); visual.BitmapEffect = VisualTreeHelper.GetBitmapEffect(old); #pragma warning restore 0618 // snapping guidelines?? DrawingContext dc = visual.RenderOpen(); dc.DrawDrawing(old.GetDrawing()); dc.Close(); int count = VisualTreeHelper.GetChildrenCount(old); for(int i = 0; i < count; i++) { Visual child = old.InternalGetVisualChild(i); CloneVisualTree(visual, child); } }
/// <summary> /// GetDrawing returns the drawing content of the reference Visual /// </summary> public static DrawingGroup GetDrawing(Visual reference) { CheckVisualReferenceArgument(reference); return(reference.GetDrawing()); }
/// <summary> /// GetDrawing returns the drawing content of the reference Visual /// </summary> public static DrawingGroup GetDrawing(Visual reference) { CheckVisualReferenceArgument(reference); return reference.GetDrawing(); }