//========================================================================== 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); }
//========================================================================== 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); }
//========================================================================== 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); }
//========================================================================== public Brush?GetBrush() { var brush = Fill?.ToBrush(this); if (brush is null) { return(null); } brush.Opacity = Opacity.ToDouble() * FillOpacity.ToDouble(); return(brush); }
//========================================================================== 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); }
//========================================================================== 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()) ))); }
//========================================================================== public override Geometry GetBaseGeometry() => new EllipseGeometry( new Point(CenterX.ToDouble(), CenterY.ToDouble()), RadiusX.ToDouble(), RadiusY.ToDouble());
//========================================================================== 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); }