public class DesaturateEffect : ShaderEffect Negative values decrease the saturation of colors. Positive values increase the saturation. The saturation level is increased or decreased by a percentage of its present saturation level. For example, an increase of 20 of the current saturation level "L" will raise the new saturation level "L1" to a value L + 0.20 * L. Likewise, increasing the saturation level 100 doubles the saturation level ( L1 = L + 1.0 * L). Decreasing the saturation level 100 will set the new saturation level to 0. This process is carried out for every pixel.
using Leadtools;using Leadtools.Codecs;using Leadtools.ImageProcessing;using Leadtools.Windows.Controls;using Leadtools.Windows.Media;using Leadtools.Windows.Media.Effects;class DesaturateEffectExampleWindow : Window{public DesaturateEffectExampleWindow(){StackPanel sp = new StackPanel();Content = sp;ImageViewer theViewer = new ImageViewer();theViewer.HorizontalAlignment = HorizontalAlignment.Center;theViewer.VerticalAlignment = VerticalAlignment.Top;theViewer.ImageHorizontalAlignment = HorizontalAlignment.Left;theViewer.ImageVerticalAlignment = VerticalAlignment.Top;sp.Children.Add(theViewer);// Create the slidersTextBlock tb = new TextBlock();tb.HorizontalAlignment = HorizontalAlignment.Center;tb.Text = "Saturation:";sp.Children.Add(tb);Slider theSlider = new Slider();theSlider.Minimum = 0.0;theSlider.Maximum = 1.0;theSlider.Width = 400;theSlider.Orientation = Orientation.Horizontal;theSlider.IsSnapToTickEnabled = true;theSlider.TickPlacement = System.Windows.Controls.Primitives.TickPlacement.BottomRight;theSlider.TickFrequency = 0.1;theSlider.AutoToolTipPrecision = 2;theSlider.AutoToolTipPlacement = System.Windows.Controls.Primitives.AutoToolTipPlacement.BottomRight;sp.Children.Add(theSlider);// Load an image into the viewertheViewer.Source = new BitmapImage(new Uri(System.IO.Path.Combine(LEAD_VARS.ImagesDir, "Cannon.jpg")));// Create the effectDesaturateEffect effect = new DesaturateEffect();effect.Saturation = 0.5;theViewer.ImageEffect = effect;// Bind the propertiesBinding bind = new Binding();bind.Source = effect;bind.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;bind.Path = new PropertyPath("Saturation");theSlider.SetBinding(Slider.ValueProperty, bind);Title = "Using DesaturateEffect";}}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";}