Пример #1
0
        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);
        }
Пример #2
0
        private static Drawing CreateDrawing(Visual visual, bool includeTransform)
        {
            DrawingGroup drawingGroup = new DrawingGroup();

            System.Windows.Media.Geometry clip = VisualTreeHelper.GetClip(visual);
            if (clip != null)
            {
                drawingGroup.ClipGeometry = clip;
            }
            if (includeTransform)
            {
                Transform transform = VisualTreeHelper.GetTransform(visual);
                Vector    offset    = VisualTreeHelper.GetOffset(visual);
                Matrix    matrix    = transform == null ? Matrix.Identity : transform.Value;
                matrix.Translate(offset.X, offset.Y);
                if (!matrix.IsIdentity)
                {
                    drawingGroup.Transform = (Transform) new MatrixTransform(matrix);
                }
            }
            double opacity = VisualTreeHelper.GetOpacity(visual);

            if (opacity != 1.0)
            {
                drawingGroup.Opacity = opacity;
            }
            Brush opacityMask = VisualTreeHelper.GetOpacityMask(visual);

            if (opacityMask != null)
            {
                drawingGroup.OpacityMask = opacityMask;
            }
            BitmapEffect bitmapEffect = VisualTreeHelper.GetBitmapEffect(visual);

            if (bitmapEffect != null)
            {
                drawingGroup.BitmapEffect = bitmapEffect;
            }
            BitmapEffectInput bitmapEffectInput = VisualTreeHelper.GetBitmapEffectInput(visual);

            if (bitmapEffectInput != null && (!bitmapEffectInput.AreaToApplyEffect.IsEmpty || bitmapEffectInput.Input != BitmapEffectInput.ContextInputSource))
            {
                drawingGroup.BitmapEffectInput = bitmapEffectInput;
            }
            Drawing drawing1;

            if (MakeDrawingBrushCommand.IsMediaElementInstance(visual))
            {
                Rect bounds = VisualTreeHelper.GetDrawing(visual).Bounds;
                drawing1 = (Drawing) new VideoDrawing()
                {
                    Rect = bounds
                };
            }
            else
            {
                drawing1 = (Drawing)VisualTreeHelper.GetDrawing(visual);
            }
            if (drawing1 != null)
            {
                drawingGroup.Children.Add(drawing1);
            }
            for (int childIndex = 0; childIndex < VisualTreeHelper.GetChildrenCount((DependencyObject)visual); ++childIndex)
            {
                Visual visual1 = VisualTreeHelper.GetChild((DependencyObject)visual, childIndex) as Visual;
                if (visual1 != null)
                {
                    Drawing drawing2 = MakeDrawingBrushCommand.CreateDrawing(visual1, true);
                    if (drawing2 != null)
                    {
                        drawingGroup.Children.Add(drawing2);
                    }
                }
            }
            if (drawingGroup.Children.Count == 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);
        }