The DesaturateEffect Class supports WPF/Silverlight.
Increase or decrease the image saturation based on the given parameter. Supported in SilverlightVisual Basic (Declaration) | |
---|---|
Public Class DesaturateEffect Inherits System.Windows.Media.Effects.ShaderEffect Implements IAnimatable |
Visual Basic (Usage) | Copy Code |
---|---|
Dim instance As DesaturateEffect |
C# | |
---|---|
public class DesaturateEffect : System.Windows.Media.Effects.ShaderEffect, IAnimatable |
C++/CLI | |
---|---|
public ref class DesaturateEffect : public System.Windows.Media.Effects.ShaderEffect, IAnimatable |
Visual Basic | Copy Code |
---|---|
Class DesaturateEffectExampleWindow Inherits Window Public Sub New() Dim sp As New StackPanel() Content = sp Dim theViewer As New ImageViewer() theViewer.HorizontalAlignment = HorizontalAlignment.Center theViewer.VerticalAlignment = VerticalAlignment.Top theViewer.ImageHorizontalAlignment = HorizontalAlignment.Left theViewer.ImageVerticalAlignment = VerticalAlignment.Top sp.Children.Add(theViewer) ' Create the sliders Dim tb As New TextBlock() tb.HorizontalAlignment = HorizontalAlignment.Center tb.Text = "Saturation:" sp.Children.Add(tb) Dim theSlider As 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 viewer theViewer.Source = New BitmapImage(New Uri(System.IO.Path.Combine(LEAD_VARS.ImagesDir, "Cannon.jpg"))) ' Create the effect Dim effect As New DesaturateEffect() effect.Saturation = 0.5 theViewer.ImageEffect = effect ' Bind the properties Dim bind As New Binding() bind.Source = effect bind.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged bind.Path = New PropertyPath("Saturation") theSlider.SetBinding(Slider.ValueProperty, bind) Title = "Using DesaturateEffect" End Sub End Class Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" End Class |
C# | Copy Code |
---|---|
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 sliders TextBlock 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 viewer theViewer.Source = new BitmapImage(new Uri(System.IO.Path.Combine(LEAD_VARS.ImagesDir,"Cannon.jpg"))); // Create the effect DesaturateEffect effect = new DesaturateEffect(); effect.Saturation = 0.5; theViewer.ImageEffect = effect; // Bind the properties Binding 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:\Users\Public\Documents\LEADTOOLS Images"; } |
SilverlightCSharp | Copy Code |
---|---|
class DesaturateEffectExampleWindow : UserControl { 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 sliders TextBlock 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; sp.Children.Add(theSlider); // Load an image into the viewer theViewer.Source = new BitmapImage(new Uri(LeadtoolsExamples.Common.ImagesPath.Path + "Cannon.jpg")); // Create the effect DesaturateEffect effect = new DesaturateEffect(); effect.Saturation = 0.5; theViewer.ImageEffect = effect; // Bind the properties Binding bind = new Binding(); bind.Source = effect; bind.UpdateSourceTrigger = UpdateSourceTrigger.Default; bind.Path = new PropertyPath("Saturation"); theSlider.SetBinding(Slider.ValueProperty, bind); } } |
SilverlightVB | Copy Code |
---|---|
Class DesaturateEffectExampleWindow Inherits UserControl Public Sub New() Dim sp As New StackPanel() Content = sp Dim theViewer As New ImageViewer() theViewer.HorizontalAlignment = HorizontalAlignment.Center theViewer.VerticalAlignment = VerticalAlignment.Top theViewer.ImageHorizontalAlignment = HorizontalAlignment.Left theViewer.ImageVerticalAlignment = VerticalAlignment.Top sp.Children.Add(theViewer) ' Create the sliders Dim tb As New TextBlock() tb.HorizontalAlignment = HorizontalAlignment.Center tb.Text = "Saturation:" sp.Children.Add(tb) Dim theSlider As New Slider() theSlider.Minimum = 0.0 theSlider.Maximum = 1.0 theSlider.Width = 400 theSlider.Orientation = Orientation.Horizontal sp.Children.Add(theSlider) ' Load an image into the viewer theViewer.Source = New BitmapImage(New Uri(LeadtoolsExamples.Common.ImagesPath.Path + "Cannon.jpg")) ' Create the effect Dim effect As New DesaturateEffect() effect.Saturation = 0.5 theViewer.ImageEffect = effect ' Bind the properties Dim bind As New Binding() bind.Source = effect bind.UpdateSourceTrigger = UpdateSourceTrigger.Default bind.Path = New PropertyPath("Saturation") theSlider.SetBinding(Slider.ValueProperty, bind) End Sub End Class |
XAML | Copy Code |
---|---|
<Window x:Class="DesaturateEffectExample" Height="600" Width="800" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:leadControls="clr-namespace:Leadtools.Windows.Controls;assembly=Leadtools.Windows.Controls" xmlns:leadEffects="clr-namespace:Leadtools.Windows.Media.Effects;assembly=Leadtools.Windows.Media.Effects"> <StackPanel> <leadControls:ImageViewer HorizontalAlignment="Center" VerticalAlignment="Top" ImageHorizontalAlignment="Left" ImageVerticalAlignment="Top" Source="file:///c:\users\Public\Documents\LEADTOOLS Images\cannon.jpg"> <leadControls:ImageViewer.ImageEffect> <leadEffects:DesaturateEffect Saturation="{Binding Value, ElementName=SaturationSlider, UpdateSourceTrigger=PropertyChanged}"></leadEffects:DesaturateEffect> </leadControls:ImageViewer.ImageEffect> </leadControls:ImageViewer> <TextBlock HorizontalAlignment="Center" Text="Saturation:" /> <Slider x:Name="SaturationSlider" Minimum="0.0" Maximum="1.0" TickFrequency="0.1" Width="400" Orientation="Horizontal" IsSnapToTickEnabled="True" TickPlacement="BottomRight" AutoToolTipPrecision="2" AutoToolTipPlacement="BottomRight"></Slider> </StackPanel> </Window> |
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.
System.Object
System.Windows.Threading.DispatcherObject
System.Windows.DependencyObject
System.Windows.Freezable
System.Windows.Media.Animation.Animatable
System.Windows.Media.Effects.Effect
System.Windows.Media.Effects.ShaderEffect
Leadtools.Windows.Media.Effects.DesaturateEffect
Target Platforms: Silverlight 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only)