@@ -97,6 +97,14 @@ public enum eSizeType
97
97
DependencyProperty . Register ( "OverrideColor" , typeof ( Color ? ) , typeof ( SVGImage ) ,
98
98
new FrameworkPropertyMetadata ( default , FrameworkPropertyMetadataOptions . AffectsRender , OverrideColorPropertyChanged ) ) ;
99
99
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
+
100
108
public static readonly DependencyProperty CustomBrushesProperty = DependencyProperty . Register ( nameof ( CustomBrushes ) ,
101
109
typeof ( Dictionary < string , Brush > ) , typeof ( SVGImage ) , new FrameworkPropertyMetadata ( default ,
102
110
FrameworkPropertyMetadataOptions . AffectsRender , CustomBrushesPropertyChanged ) ) ;
@@ -167,6 +175,18 @@ public Color? OverrideColor
167
175
set { SetValue ( OverrideColorProperty , value ) ; }
168
176
}
169
177
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
+
170
190
public double ? OverrideStrokeWidth
171
191
{
172
192
get { return ( double ? ) GetValue ( OverrideStrokeWidthProperty ) ; }
@@ -234,6 +254,8 @@ public void ReRenderSvg()
234
254
_render = new SVGRender ( ) ;
235
255
_render . ExternalFileLoader = this . ExternalFileLoader ;
236
256
_render . OverrideColor = OverrideColor ;
257
+ _render . OverrideFillColor = OverrideFillColor ;
258
+ _render . OverrideStrokeColor = OverrideStrokeColor ;
237
259
_render . CustomBrushes = CustomBrushes ;
238
260
_render . OverrideStrokeWidth = OverrideStrokeWidth ;
239
261
_render . UseAnimations = this . UseAnimations ;
@@ -256,6 +278,8 @@ public void SetImage(string svgFilename)
256
278
_render . ExternalFileLoader = this . ExternalFileLoader ;
257
279
_render . UseAnimations = false ;
258
280
_render . OverrideColor = OverrideColor ;
281
+ _render . OverrideFillColor = OverrideFillColor ;
282
+ _render . OverrideStrokeColor = OverrideStrokeColor ;
259
283
_render . CustomBrushes = CustomBrushes ;
260
284
_render . OverrideStrokeWidth = OverrideStrokeWidth ;
261
285
@@ -276,6 +300,8 @@ public void SetImage(Stream stream)
276
300
_render = new SVGRender ( ) ;
277
301
_render . ExternalFileLoader = this . ExternalFileLoader ;
278
302
_render . OverrideColor = OverrideColor ;
303
+ _render . OverrideFillColor = OverrideFillColor ;
304
+ _render . OverrideStrokeColor = OverrideStrokeColor ;
279
305
_render . CustomBrushes = CustomBrushes ;
280
306
_render . OverrideStrokeWidth = OverrideStrokeWidth ;
281
307
_render . UseAnimations = false ;
@@ -298,6 +324,8 @@ public void SetImage(Uri uriSource)
298
324
_render = new SVGRender ( ) ;
299
325
_render . ExternalFileLoader = this . ExternalFileLoader ;
300
326
_render . OverrideColor = OverrideColor ;
327
+ _render . OverrideFillColor = OverrideFillColor ;
328
+ _render . OverrideStrokeColor = OverrideStrokeColor ;
301
329
_render . CustomBrushes = CustomBrushes ;
302
330
_render . OverrideStrokeWidth = OverrideStrokeWidth ;
303
331
_render . UseAnimations = false ;
@@ -326,6 +354,8 @@ protected override void OnInitialized(EventArgs e)
326
354
_render = new SVGRender ( ) ;
327
355
_render . ExternalFileLoader = this . ExternalFileLoader ;
328
356
_render . OverrideColor = OverrideColor ;
357
+ _render . OverrideFillColor = OverrideFillColor ;
358
+ _render . OverrideStrokeColor = OverrideStrokeColor ;
329
359
_render . CustomBrushes = CustomBrushes ;
330
360
_render . OverrideStrokeWidth = OverrideStrokeWidth ;
331
361
_render . UseAnimations = this . UseAnimations ;
@@ -694,7 +724,7 @@ DrawingGroup LoadDrawing(Uri svgSource)
694
724
//case "ftp":
695
725
case "https" :
696
726
case "http" :
697
- using ( FileSvgReader reader = new FileSvgReader ( this . OverrideColor ) )
727
+ using ( FileSvgReader reader = new FileSvgReader ( this . OverrideColor , this . OverrideFillColor , this . OverrideStrokeColor ) )
698
728
{
699
729
DrawingGroup drawGroup = reader . Read ( svgSource , _render ) ;
700
730
@@ -729,7 +759,7 @@ DrawingGroup LoadDrawing(Uri svgSource)
729
759
{
730
760
using ( var zipStream = new GZipStream ( svgStream , CompressionMode . Decompress ) )
731
761
{
732
- using ( FileSvgReader reader = new FileSvgReader ( this . OverrideColor ) )
762
+ using ( FileSvgReader reader = new FileSvgReader ( this . OverrideColor , this . OverrideFillColor , this . OverrideStrokeColor ) )
733
763
{
734
764
DrawingGroup drawGroup = reader . Read ( zipStream , _render ) ;
735
765
@@ -745,7 +775,7 @@ DrawingGroup LoadDrawing(Uri svgSource)
745
775
{
746
776
using ( svgStream )
747
777
{
748
- using ( FileSvgReader reader = new FileSvgReader ( this . OverrideColor ) )
778
+ using ( FileSvgReader reader = new FileSvgReader ( this . OverrideColor , this . OverrideFillColor , this . OverrideStrokeColor ) )
749
779
{
750
780
DrawingGroup drawGroup = reader . Read ( svgStream , _render ) ;
751
781
@@ -781,7 +811,7 @@ DrawingGroup LoadDrawing(Uri svgSource)
781
811
{
782
812
using ( GZipStream zipStream = new GZipStream ( stream , CompressionMode . Decompress ) )
783
813
{
784
- using ( var reader = new FileSvgReader ( this . OverrideColor ) )
814
+ using ( var reader = new FileSvgReader ( this . OverrideColor , this . OverrideFillColor , this . OverrideStrokeColor ) )
785
815
{
786
816
DrawingGroup drawGroup = reader . Read ( zipStream , _render ) ;
787
817
if ( drawGroup != null )
@@ -796,7 +826,7 @@ DrawingGroup LoadDrawing(Uri svgSource)
796
826
{
797
827
using ( var stream = new MemoryStream ( imageBytes ) )
798
828
{
799
- using ( var reader = new FileSvgReader ( this . OverrideColor ) )
829
+ using ( var reader = new FileSvgReader ( this . OverrideColor , this . OverrideFillColor , this . OverrideStrokeColor ) )
800
830
{
801
831
DrawingGroup drawGroup = reader . Read ( stream , _render ) ;
802
832
if ( drawGroup != null )
@@ -875,6 +905,26 @@ private static void OverrideColorPropertyChanged(DependencyObject d, DependencyP
875
905
}
876
906
}
877
907
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
+
878
928
private static void OverrideStrokeWidthPropertyChanged ( DependencyObject d , DependencyPropertyChangedEventArgs e )
879
929
{
880
930
if ( d is SVGImage svgImage && e . NewValue is double newStrokeWidth && svgImage . _render != null )
0 commit comments