GDS WPF Shaders is a small collection of special pixel shaders. The collection may expand in future releases.
Sample Code (download here:
GDS.WPF.Shaders.TestProject.zip (Apx. 1MB))
<Window x:Class="TestProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TestProject"
xmlns:GDS_WPF_Shaders_Transitions="clr-namespace:GDS.WPF.Shaders.Transitions;assembly=GDS.WPF.Shaders"
mc:Ignorable="d"
Title="GDS.WPF.Shaders V1.0 - Copyright 2017 © 2017 GD Software" Height="510" Width="854" ResizeMode="CanResizeWithGrip" WindowStartupLocation="CenterScreen">
<Window.Resources>
<Storyboard x:Key="Storyboard1" AutoReverse="True" RepeatBehavior="Forever">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Effect).(GDS_WPF_Shaders_Transitions:RippleTransitionEffect.Progress)" Storyboard.TargetName="image">
<EasingDoubleKeyFrame KeyTime="0" Value="0">
<EasingDoubleKeyFrame.EasingFunction>
<ExponentialEase EasingMode="EaseIn" Exponent="6"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
<EasingDoubleKeyFrame KeyTime="0:0:2" Value="100">
<EasingDoubleKeyFrame.EasingFunction>
<ExponentialEase EasingMode="EaseIn" Exponent="6"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Effect).(GDS_WPF_Shaders_Transitions:RadialBlurTransitionEffect.Progress)" Storyboard.TargetName="grid">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:2" Value="100"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Effect).(GDS_WPF_Shaders_Transitions:PixelateTransitionEffect.Progress)" Storyboard.TargetName="grid1">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="100"/>
<EasingDoubleKeyFrame KeyTime="0:0:2" Value="0"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Effect).(GDS_WPF_Shaders_Transitions:RippleTransitionEffect.Progress)" Storyboard.TargetName="grid1">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="50"/>
<EasingDoubleKeyFrame KeyTime="0:0:2" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource Storyboard1}"/>
</EventTrigger>
</Window.Triggers>
<Grid x:Name="grid">
<Grid.Effect>
<GDS_WPF_Shaders_Transitions:RadialBlurTransitionEffect Progress="0"/>
</Grid.Effect>
<Image x:Name="image" Source="Images/Lion1.jpg" RenderOptions.BitmapScalingMode="Linear" Margin="0,0,216,0">
<Image.Effect>
<GDS_WPF_Shaders_Transitions:RippleTransitionEffect Progress="0">
<GDS_WPF_Shaders_Transitions:RippleTransitionEffect.Texture2>
<ImageBrush ImageSource="Images/Lion2.jpg" Stretch="Uniform" TileMode="None" />
</GDS_WPF_Shaders_Transitions:RippleTransitionEffect.Texture2>
</GDS_WPF_Shaders_Transitions:RippleTransitionEffect>
</Image.Effect>
</Image>
<Grid x:Name="grid1" HorizontalAlignment="Right" Width="197">
<Grid.Effect>
<GDS_WPF_Shaders_Transitions:RippleTransitionEffect Progress="1" />
</Grid.Effect>
<ListBox Height="276" Margin="10,0,10,10" VerticalAlignment="Bottom" SelectionMode="Extended">
<ListBoxItem Content="Listbox item 1" />
<ListBoxItem Content="Listbox item 2" />
<ListBoxItem Content="Listbox item 3" />
<ListBoxItem Content="Listbox item 4" />
<ListBoxItem Content="Listbox item 5" />
<ListBoxItem Content="Listbox item 6" />
<ListBoxItem Content="Listbox item 7" />
<ListBoxItem Content="Listbox item 8" />
<ListBoxItem Content="Listbox item 9" />
<ListBoxItem Content="Listbox item 10" />
</ListBox>
<CheckBox Content="CheckBox 3" HorizontalAlignment="Left" Margin="10,0,0,291" VerticalAlignment="Bottom"/>
<CheckBox Content="CheckBox 2" HorizontalAlignment="Left" Margin="10,0,0,311" VerticalAlignment="Bottom"/>
<CheckBox Content="CheckBox 1" HorizontalAlignment="Left" Margin="10,0,0,331" VerticalAlignment="Bottom"/>
<Button Content="Button 1" HorizontalAlignment="Right" Margin="0,0,112,351" VerticalAlignment="Bottom" Width="75"/>
<Button Content="Button 2" HorizontalAlignment="Right" Margin="0,0,32,351" VerticalAlignment="Bottom" Width="75"/>
<ComboBox Margin="10,0,10,395" VerticalAlignment="Bottom" SelectedIndex="0">
<ComboBoxItem Content="Item 1" />
<ComboBoxItem Content="Item 2" />
<ComboBoxItem Content="Item 3" />
<ComboBoxItem Content="Item 4" />
<ComboBoxItem Content="Item 5" />
<ComboBoxItem Content="Item 6" />
<ComboBoxItem Content="Item 7" />
<ComboBoxItem Content="Item 8" />
<ComboBoxItem Content="Item 9" />
<ComboBoxItem Content="Item 10" />
</ComboBox>
</Grid>
</Grid>
</Window>
How it looks: