@@ -97,6 +97,14 @@ public enum eSizeType
9797 DependencyProperty . Register ( "OverrideColor" , typeof ( Color ? ) , typeof ( SVGImage ) ,
9898 new FrameworkPropertyMetadata ( default , FrameworkPropertyMetadataOptions . AffectsRender , OverrideColorPropertyChanged ) ) ;
9999
100+ public static readonly DependencyProperty OverrideFillColorProperty =
101+ DependencyProperty . Register ( "OverrideFillColor" , typeof ( Color ? ) , typeof ( SVGImage ) ,
102+ new FrameworkPropertyMetadata ( default , FrameworkPropertyMetadataOptions . AffectsRender , OverrideFillColorPropertyChanged ) ) ;
103+
104+ public static readonly DependencyProperty OverrideStrokeColorProperty =
105+ DependencyProperty . Register ( "OverrideStrokeColor" , typeof ( Color ? ) , typeof ( SVGImage ) ,
106+ new FrameworkPropertyMetadata ( default , FrameworkPropertyMetadataOptions . AffectsRender , OverrideStrokeColorPropertyChanged ) ) ;
107+
100108 public static readonly DependencyProperty CustomBrushesProperty = DependencyProperty . Register ( nameof ( CustomBrushes ) ,
101109 typeof ( Dictionary < string , Brush > ) , typeof ( SVGImage ) , new FrameworkPropertyMetadata ( default ,
102110 FrameworkPropertyMetadataOptions . AffectsRender , CustomBrushesPropertyChanged ) ) ;
@@ -167,6 +175,18 @@ public Color? OverrideColor
167175 set { SetValue ( OverrideColorProperty , value ) ; }
168176 }
169177
178+ public Color ? OverrideFillColor
179+ {
180+ get { return ( Color ? ) GetValue ( OverrideFillColorProperty ) ; }
181+ set { SetValue ( OverrideFillColorProperty , value ) ; }
182+ }
183+
184+ public Color ? OverrideStrokeColor
185+ {
186+ get { return ( Color ? ) GetValue ( OverrideStrokeColorProperty ) ; }
187+ set { SetValue ( OverrideStrokeColorProperty , value ) ; }
188+ }
189+
170190 public double ? OverrideStrokeWidth
171191 {
172192 get { return ( double ? ) GetValue ( OverrideStrokeWidthProperty ) ; }
@@ -234,6 +254,8 @@ public void ReRenderSvg()
234254 _render = new SVGRender ( ) ;
235255 _render . ExternalFileLoader = this . ExternalFileLoader ;
236256 _render . OverrideColor = OverrideColor ;
257+ _render . OverrideFillColor = OverrideFillColor ;
258+ _render . OverrideStrokeColor = OverrideStrokeColor ;
237259 _render . CustomBrushes = CustomBrushes ;
238260 _render . OverrideStrokeWidth = OverrideStrokeWidth ;
239261 _render . UseAnimations = this . UseAnimations ;
@@ -256,6 +278,8 @@ public void SetImage(string svgFilename)
256278 _render . ExternalFileLoader = this . ExternalFileLoader ;
257279 _render . UseAnimations = false ;
258280 _render . OverrideColor = OverrideColor ;
281+ _render . OverrideFillColor = OverrideFillColor ;
282+ _render . OverrideStrokeColor = OverrideStrokeColor ;
259283 _render . CustomBrushes = CustomBrushes ;
260284 _render . OverrideStrokeWidth = OverrideStrokeWidth ;
261285
@@ -276,6 +300,8 @@ public void SetImage(Stream stream)
276300 _render = new SVGRender ( ) ;
277301 _render . ExternalFileLoader = this . ExternalFileLoader ;
278302 _render . OverrideColor = OverrideColor ;
303+ _render . OverrideFillColor = OverrideFillColor ;
304+ _render . OverrideStrokeColor = OverrideStrokeColor ;
279305 _render . CustomBrushes = CustomBrushes ;
280306 _render . OverrideStrokeWidth = OverrideStrokeWidth ;
281307 _render . UseAnimations = false ;
@@ -298,6 +324,8 @@ public void SetImage(Uri uriSource)
298324 _render = new SVGRender ( ) ;
299325 _render . ExternalFileLoader = this . ExternalFileLoader ;
300326 _render . OverrideColor = OverrideColor ;
327+ _render . OverrideFillColor = OverrideFillColor ;
328+ _render . OverrideStrokeColor = OverrideStrokeColor ;
301329 _render . CustomBrushes = CustomBrushes ;
302330 _render . OverrideStrokeWidth = OverrideStrokeWidth ;
303331 _render . UseAnimations = false ;
@@ -326,6 +354,8 @@ protected override void OnInitialized(EventArgs e)
326354 _render = new SVGRender ( ) ;
327355 _render . ExternalFileLoader = this . ExternalFileLoader ;
328356 _render . OverrideColor = OverrideColor ;
357+ _render . OverrideFillColor = OverrideFillColor ;
358+ _render . OverrideStrokeColor = OverrideStrokeColor ;
329359 _render . CustomBrushes = CustomBrushes ;
330360 _render . OverrideStrokeWidth = OverrideStrokeWidth ;
331361 _render . UseAnimations = this . UseAnimations ;
@@ -694,7 +724,7 @@ DrawingGroup LoadDrawing(Uri svgSource)
694724 //case "ftp":
695725 case "https" :
696726 case "http" :
697- using ( FileSvgReader reader = new FileSvgReader ( this . OverrideColor ) )
727+ using ( FileSvgReader reader = new FileSvgReader ( this . OverrideColor , this . OverrideFillColor , this . OverrideStrokeColor ) )
698728 {
699729 DrawingGroup drawGroup = reader . Read ( svgSource , _render ) ;
700730
@@ -729,7 +759,7 @@ DrawingGroup LoadDrawing(Uri svgSource)
729759 {
730760 using ( var zipStream = new GZipStream ( svgStream , CompressionMode . Decompress ) )
731761 {
732- using ( FileSvgReader reader = new FileSvgReader ( this . OverrideColor ) )
762+ using ( FileSvgReader reader = new FileSvgReader ( this . OverrideColor , this . OverrideFillColor , this . OverrideStrokeColor ) )
733763 {
734764 DrawingGroup drawGroup = reader . Read ( zipStream , _render ) ;
735765
@@ -745,7 +775,7 @@ DrawingGroup LoadDrawing(Uri svgSource)
745775 {
746776 using ( svgStream )
747777 {
748- using ( FileSvgReader reader = new FileSvgReader ( this . OverrideColor ) )
778+ using ( FileSvgReader reader = new FileSvgReader ( this . OverrideColor , this . OverrideFillColor , this . OverrideStrokeColor ) )
749779 {
750780 DrawingGroup drawGroup = reader . Read ( svgStream , _render ) ;
751781
@@ -781,7 +811,7 @@ DrawingGroup LoadDrawing(Uri svgSource)
781811 {
782812 using ( GZipStream zipStream = new GZipStream ( stream , CompressionMode . Decompress ) )
783813 {
784- using ( var reader = new FileSvgReader ( this . OverrideColor ) )
814+ using ( var reader = new FileSvgReader ( this . OverrideColor , this . OverrideFillColor , this . OverrideStrokeColor ) )
785815 {
786816 DrawingGroup drawGroup = reader . Read ( zipStream , _render ) ;
787817 if ( drawGroup != null )
@@ -796,7 +826,7 @@ DrawingGroup LoadDrawing(Uri svgSource)
796826 {
797827 using ( var stream = new MemoryStream ( imageBytes ) )
798828 {
799- using ( var reader = new FileSvgReader ( this . OverrideColor ) )
829+ using ( var reader = new FileSvgReader ( this . OverrideColor , this . OverrideFillColor , this . OverrideStrokeColor ) )
800830 {
801831 DrawingGroup drawGroup = reader . Read ( stream , _render ) ;
802832 if ( drawGroup != null )
@@ -875,6 +905,26 @@ private static void OverrideColorPropertyChanged(DependencyObject d, DependencyP
875905 }
876906 }
877907
908+ private static void OverrideFillColorPropertyChanged ( DependencyObject d , DependencyPropertyChangedEventArgs e )
909+ {
910+ if ( d is SVGImage svgImage && e . NewValue is Color newColor && svgImage . _render != null )
911+ {
912+ svgImage . _render . OverrideFillColor = newColor ;
913+ svgImage . InvalidateVisual ( ) ;
914+ svgImage . ReRenderSvg ( ) ;
915+ }
916+ }
917+
918+ private static void OverrideStrokeColorPropertyChanged ( DependencyObject d , DependencyPropertyChangedEventArgs e )
919+ {
920+ if ( d is SVGImage svgImage && e . NewValue is Color newColor && svgImage . _render != null )
921+ {
922+ svgImage . _render . OverrideStrokeColor = newColor ;
923+ svgImage . InvalidateVisual ( ) ;
924+ svgImage . ReRenderSvg ( ) ;
925+ }
926+ }
927+
878928 private static void OverrideStrokeWidthPropertyChanged ( DependencyObject d , DependencyPropertyChangedEventArgs e )
879929 {
880930 if ( d is SVGImage svgImage && e . NewValue is double newStrokeWidth && svgImage . _render != null )
0 commit comments