Skip to content

Commit 18567fe

Browse files
authored
Merge pull request #49 from DrCopyPaste/master
changing overridecolor results in rerendering #48
2 parents 80c89fb + 62537c9 commit 18567fe

File tree

5 files changed

+35
-2
lines changed

5 files changed

+35
-2
lines changed

Samples/Example/Example.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,17 @@
2929
<DefineConstants Condition="$(TargetFramework.StartsWith('net48'))">$(DefineConstants);DOTNET48;NETFULL</DefineConstants>
3030
<DefineConstants Condition="$(TargetFramework.StartsWith('netcore'))">$(DefineConstants);NETCORE</DefineConstants>
3131
</PropertyGroup>
32+
<ItemGroup>
33+
<None Remove="Images\rect.svg" />
34+
</ItemGroup>
3235
<ItemGroup>
3336
<ProjectReference Include="..\..\Source\SVGImage\DotNetProjects.SVGImage.csproj" />
3437
</ItemGroup>
3538
<ItemGroup>
3639
<Resource Include="Images\brush.svg" />
3740
<Resource Include="Images\error.svg" />
3841
<Resource Include="Images\example radgrad01.svg" />
42+
<Resource Include="Images\rect.svg" />
3943
<Resource Include="Images\test_3.svg" />
4044
<Resource Include="Images\tombigel_green_router.svg" />
4145
<Resource Include="Images\Soccer_ball_animated.svg" />

Samples/Example/Images/rect.svg

Lines changed: 5 additions & 0 deletions
Loading

Samples/Example/MainWindow.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@
107107
<svg1:SVGImage Source="/Example;component/Images/3.svg" RenderTransformOrigin="0.5,0.5" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Margin="3" />
108108
<svg1:SVGImage Source="/Example;component/Images/4.svg" RenderTransformOrigin="0.5,0.5" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Margin="3" />
109109
<svg1:SVGImage Source="/Example;component/Images/5.svg" RenderTransformOrigin="0.5,0.5" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Margin="3" />
110+
<svg1:SVGImage Source="/Example;component/Images/rect.svg" RenderTransformOrigin="0.5,0.5" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Margin="3" OverrideColor="Black" x:Name="OverrideColorTest" MouseDoubleClick="SVGImage_MouseDoubleClick" />
110111
</UniformGrid>
111112
</TabItem>
112113
<TabItem Header="Animation/Clipping" Height="40" Width="245" x:Name="tabAnimation" Style="{DynamicResource TabItem.Style.TopTabStripPlacement}">

Samples/Example/MainWindow.xaml.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,5 +139,15 @@ private void EnsureIcons()
139139
}
140140
#endif
141141
}
142+
143+
private void SVGImage_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
144+
{
145+
var rnd = new Random().Next(0, 3);
146+
147+
OverrideColorTest.OverrideColor =
148+
rnd == 0 ? System.Windows.Media.Colors.White :
149+
rnd == 1 ? System.Windows.Media.Colors.Magenta :
150+
System.Windows.Media.Colors.Black;
151+
}
142152
}
143153
}

Source/SVGImage/SVG/SVGImage.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,11 @@ public enum eSizeType
8888
typeof(double?), typeof(SVGImage), new FrameworkPropertyMetadata(default,
8989
FrameworkPropertyMetadataOptions.AffectsRender, OverrideStrokeWidthPropertyChanged));
9090

91-
public static readonly DependencyProperty OverrideColorProperty = DependencyProperty.Register("OverrideColor",
92-
typeof(Color?), typeof(SVGImage), new PropertyMetadata(null));
91+
public static readonly DependencyProperty OverrideColorProperty =
92+
DependencyProperty.Register("OverrideColor",
93+
typeof(Color?),
94+
typeof(SVGImage),
95+
new FrameworkPropertyMetadata(default, FrameworkPropertyMetadataOptions.AffectsRender, OverrideColorPropertyChanged));
9396

9497
public static readonly DependencyProperty CustomBrushesProperty = DependencyProperty.Register(nameof(CustomBrushes),
9598
typeof(Dictionary<string, Brush>), typeof(SVGImage), new FrameworkPropertyMetadata(default,
@@ -739,6 +742,16 @@ static void OnImageSourceChanged(DependencyObject d, DependencyPropertyChangedEv
739742
((SVGImage)d).SetImage(e.NewValue as Drawing);
740743
}
741744

745+
private static void OverrideColorPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
746+
{
747+
if (d is SVGImage svgImage && e.NewValue is Color newColor && svgImage._render != null)
748+
{
749+
svgImage._render.OverrideColor = newColor;
750+
svgImage.InvalidateVisual();
751+
svgImage.ReRenderSvg();
752+
}
753+
}
754+
742755
private static void OverrideStrokeWidthPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
743756
{
744757
if (d is SVGImage svgImage && e.NewValue is double newStrokeWidth && svgImage._render != null)

0 commit comments

Comments
 (0)