Ejemplo n.º 1
0
        //==========================================================================
        public override BitmapEffect ToBitmapEffect()
        {
            var blur_bitmap_effect = new BlurBitmapEffect();

            blur_bitmap_effect.Radius     = StdDeviation.ToDouble();
            blur_bitmap_effect.KernelType = KernelType.Box;
            return(blur_bitmap_effect);
        }
Ejemplo n.º 2
0
        //==========================================================================
        protected override GradientBrush SetBrush(GradientBrush brush)
        {
            var radial_gradient_brush = base.SetBrush(brush) as RadialGradientBrush;

            if (radial_gradient_brush != null)
            {
                var cx = CX.ToDouble();
                var cy = CY.ToDouble();
                var fx = FX?.ToDouble() ?? cx;
                var fy = FY?.ToDouble() ?? cy;

                radial_gradient_brush.GradientOrigin = new Point(fx, fy);
                radial_gradient_brush.RadiusX        = R.ToDouble();
                radial_gradient_brush.RadiusY        = R.ToDouble();
                radial_gradient_brush.Center         = new Point(cx, cy);
            }
            return(brush);
        }
Ejemplo n.º 3
0
        //==========================================================================
        public Pen?GetPen()
        {
            if (Stroke is null)
            {
                return(null);
            }

            if (StrokeWidth.ToDouble() <= 0.0)
            {
                return(null);
            }

            var brush = Stroke.ToBrush(this);

            brush.Opacity = Opacity.ToDouble() * StrokeOpacity.ToDouble();

            var pen = new Pen(brush, StrokeWidth.ToDouble());

            return(pen);
        }
Ejemplo n.º 4
0
        //==========================================================================
        public Brush?GetBrush()
        {
            var brush = Fill?.ToBrush(this);

            if (brush is null)
            {
                return(null);
            }

            brush.Opacity = Opacity.ToDouble() * FillOpacity.ToDouble();
            return(brush);
        }
Ejemplo n.º 5
0
        //==========================================================================
        public GradientStop ToGradientStop()
        {
            var color = Color.ToColor();

            color.A = (byte)Math.Round(Opacity.ToDouble() * 255);

            var stop = new GradientStop();

            stop.Color  = color;
            stop.Offset = Offset.ToDouble();

            return(stop);
        }
Ejemplo n.º 6
0
        //==========================================================================
        public override Drawing GetBaseDrawing()
        {
            if (Data is null)
            {
                return(null);
            }

            var temp_file = Path.GetTempFileName();

            using (var file_stream = new FileStream(temp_file, FileMode.Create, FileAccess.Write))
                using (var writer = new BinaryWriter(file_stream))
                    writer.Write(Data);

            return(new ImageDrawing(new BitmapImage(new Uri(temp_file)), new Rect(
                                        new Point(X.ToDouble(), Y.ToDouble()),
                                        new Size(Width.ToDouble(), Height.ToDouble())
                                        )));
        }
Ejemplo n.º 7
0
 //==========================================================================
 public override Geometry GetBaseGeometry() => new EllipseGeometry(
     new Point(CenterX.ToDouble(), CenterY.ToDouble()), RadiusX.ToDouble(),
     RadiusY.ToDouble());
Ejemplo n.º 8
0
 //==========================================================================
 public override Geometry GetBaseGeometry() => new RectangleGeometry(new Rect(new Point(X.ToDouble(), Y.ToDouble()),
                                                                              new Size(Width.ToDouble(), Height.ToDouble())),
                                                                     CornerRadiusX.ToDouble(),
                                                                     CornerRadiusY.ToDouble());
        //==========================================================================
        public virtual Drawing Draw()
        {
            var drawing_group = new DrawingGroup();

            drawing_group.Opacity = Opacity.ToDouble();
            if (Transform != null)
            {
                drawing_group.Transform = Transform.ToTransform();
            }

            foreach (var child_element in Children)
            {
                var element = child_element;
                if (element is SvgUseElement)
                {
                    element = (element as SvgUseElement).GetElement();
                }

                Drawing drawing = null;

                if (element is SvgDrawableBaseElement)
                {
                    if ((element as SvgDrawableBaseElement).Display != SvgDisplay.None)
                    {
                        drawing = (element as SvgDrawableBaseElement).Draw();
                    }
                }
                else if (element is SvgDrawableContainerBaseElement)
                {
                    if ((element as SvgDrawableContainerBaseElement).Display != SvgDisplay.None)
                    {
                        drawing = (element as SvgDrawableContainerBaseElement).Draw();
                    }
                }

                if (drawing != null)
                {
                    drawing_group.Children.Add(drawing);
                }
            }

            if (Filter != null)
            {
                var filter_element = Document.Elements[Filter.Id] as SvgFilterElement;
                if (filter_element != null)
                {
                    drawing_group.BitmapEffect = filter_element.ToBitmapEffect();
                }
            }

            if (ClipPath != null)
            {
                var clip_path_element = Document.Elements[ClipPath.Id] as SvgClipPathElement;
                if (clip_path_element != null)
                {
                    drawing_group.ClipGeometry = clip_path_element.GetClipGeometry();
                }
            }

            if (Mask != null)
            {
                var mask_element = Document.Elements[Mask.Id] as SvgMaskElement;
                if (mask_element != null)
                {
                    var opacity_mask = mask_element.GetOpacityMask();

                    /*
                     * if(Transform != null)
                     * opacity_mask.Transform = Transform.ToTransform();
                     */
                    drawing_group.OpacityMask = opacity_mask;
                }
            }

            return(drawing_group);
        }