protected override object CreateTileBrush(BaseFrameworkElement element) { Visual visual1 = element.Visual != null ? element.Visual.PlatformSpecificObject as Visual : (Visual)null; if (visual1 == null) { return((object)null); } foreach (Visual visual2 in ElementUtilities.GetVisualTree(visual1)) { if (MakeDrawingBrushCommand.IsMediaElementInstance(visual2)) { this.showDrawingVideoWarning = true; break; } } Drawing drawing = MakeDrawingBrushCommand.SimplifyDrawing(MakeDrawingBrushCommand.CreateDrawing(visual1, false), Path.GetDirectoryName(this.SceneViewModel.ProjectContext.ProjectPath)); DrawingBrush drawingBrush = new DrawingBrush(); if (drawing != null) { drawingBrush.Drawing = drawing; UIElement uiElement = visual1 as UIElement; if (uiElement != null) { drawingBrush.Viewbox = new Rect(uiElement.RenderSize); drawingBrush.ViewboxUnits = BrushMappingMode.Absolute; } } return((object)drawingBrush); }
private static Drawing SimplifyDrawingGroup(DrawingGroup drawingGroup, string projectPath) { for (int index = drawingGroup.Children.Count - 1; index >= 0; --index) { Drawing drawing = MakeDrawingBrushCommand.SimplifyDrawing(drawingGroup.Children[index], projectPath); if (drawing == null) { drawingGroup.Children.RemoveAt(index); } else { drawingGroup.Children[index] = drawing; } } if (drawingGroup.ClipGeometry == null) { drawingGroup.ClearValue(DrawingGroup.ClipGeometryProperty); } if (drawingGroup.Transform == null || drawingGroup.Transform.Value.IsIdentity) { drawingGroup.ClearValue(DrawingGroup.TransformProperty); } if (drawingGroup.Opacity >= 1.0) { drawingGroup.ClearValue(DrawingGroup.OpacityProperty); } if (drawingGroup.OpacityMask == null) { drawingGroup.ClearValue(DrawingGroup.OpacityMaskProperty); } if (drawingGroup.BitmapEffect == null) { drawingGroup.ClearValue(DrawingGroup.BitmapEffectProperty); } if (drawingGroup.BitmapEffectInput == null || drawingGroup.BitmapEffectInput.AreaToApplyEffect.IsEmpty && drawingGroup.BitmapEffectInput.Input == BitmapEffectInput.ContextInputSource) { drawingGroup.ClearValue(DrawingGroup.BitmapEffectInputProperty); } if (drawingGroup.Children.Count == 0 || drawingGroup.Opacity <= 0.0) { return((Drawing)null); } if (drawingGroup.Children.Count == 1 && drawingGroup.ClipGeometry == null && (drawingGroup.Transform == null || drawingGroup.Transform.Value.IsIdentity) && (drawingGroup.Opacity == 1.0 && drawingGroup.OpacityMask == null && drawingGroup.BitmapEffect == null)) { return(drawingGroup.Children[0]); } return((Drawing)drawingGroup); }