From 25dbd988472f7d4ad81fb7469379c91c9ba9f1a6 Mon Sep 17 00:00:00 2001 From: Marc-Alexandre Blanchard Date: Mon, 17 Jun 2019 16:46:08 +0200 Subject: [PATCH] Add new color property to icon, in order to change SVG color. --- SvgXF/SvgXF/Icon.cs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/SvgXF/SvgXF/Icon.cs b/SvgXF/SvgXF/Icon.cs index edbc2b2..71dbed7 100644 --- a/SvgXF/SvgXF/Icon.cs +++ b/SvgXF/SvgXF/Icon.cs @@ -30,6 +30,19 @@ public string ResourceId #endregion + #region Color + + public static readonly BindableProperty ColorProperty = BindableProperty.Create( + nameof(Color), typeof(Color), typeof(SVGIcon),Color.Black, propertyChanged: RedrawCanvas); + + public Color Color + { + get => (Color)GetValue(ColorProperty); + set => SetValue(ColorProperty, value); + } + + #endregion + #endregion #region Constructor @@ -78,7 +91,15 @@ private void CanvasViewOnPaintSurface(object sender, SKPaintSurfaceEventArgs arg canvas.Scale(ratio); canvas.Translate(-bounds.MidX, -bounds.MidY); - canvas.DrawPicture(svg.Picture); + var paint = new SKPaint() + { + ColorFilter = SKColorFilter.CreateBlendMode( + this.Color.ToSKColor(), + SKBlendMode.SrcIn + ) + }; + + canvas.DrawPicture(svg.Picture,paint); } }