Leadtools.Windows.Media.Effects Send comments on this topic. | Back to Introduction - LEADTOOLS WPF | Help Version 16.5.9.25
GrayScaleExtendedCommandBitmapEffect Class
See Also  Members   Example 
Leadtools.Windows.Media.Effects.Color Namespace : GrayScaleExtendedCommandBitmapEffect Class





Converts any image to a gray scale image without changing its resolution.

Syntax

Visual Basic (Declaration) 
Public Class GrayScaleExtendedCommandBitmapEffect 
   Inherits RasterCommandBitmapEffect
Visual Basic (Usage)Copy Code
Dim instance As GrayScaleExtendedCommandBitmapEffect
C# 
public class GrayScaleExtendedCommandBitmapEffect : RasterCommandBitmapEffect 
C++/CLI 
public ref class GrayScaleExtendedCommandBitmapEffect : public RasterCommandBitmapEffect 
XAML Property Element Usage 

GrayScaleExtendedCommandBitmapEffect ...

XAML Property Element Usage 

GrayScaleExtendedCommandBitmapEffect ...

Example

Run the GrayScaleExtendedCommandBitmapEffect on an image with RedFactor = 300, GreenFactor = 590, and BlueFactor = 110.

Visual BasicCopy Code
Public Sub GrayScaleExtendedCommandBitmapEffectExample(ByVal element As FrameworkElement)
   ' Initialize Effect
   Dim effect As GrayScaleExtendedCommandBitmapEffect = New GrayScaleExtendedCommandBitmapEffect()
   effect.RedFactor = 300
   effect.GreenFactor = 590
   effect.BlueFactor = 110
   element.BitmapEffect = effect



   ' Initialize Animations
   Dim animation1 As Int32Animation = New Int32Animation()
   animation1.From = 0
   animation1.To = 1000
   animation1.By = 1
   animation1.Duration = New Duration(TimeSpan.FromSeconds(2.0))
   animation1.AutoReverse = True
   animation1.RepeatBehavior = RepeatBehavior.Forever
   Dim animation2 As Int32Animation = New Int32Animation()
   animation2.From = 0
   animation2.To = 1000
   animation2.By = 1
   animation2.Duration = New Duration(TimeSpan.FromSeconds(3.0))
   animation2.AutoReverse = True
   animation2.RepeatBehavior = RepeatBehavior.Forever
   Dim animation3 As Int32Animation = New Int32Animation()
   animation3.From = 0
   animation3.To = 1000
   animation3.By = 1
   animation3.Duration = New Duration(TimeSpan.FromSeconds(4.0))
   animation3.AutoReverse = True
   animation3.RepeatBehavior = RepeatBehavior.Forever

   ' Initialize and run Storyboard
   Dim storyboard As Storyboard = New Storyboard()
   storyboard.SetTargetName(animation1, "AnimatedBitmapEffect")
   storyboard.SetTargetProperty(animation1, New PropertyPath(GrayScaleExtendedCommandBitmapEffect.RedFactorProperty))
   element.RegisterName("AnimatedBitmapEffect", effect)
   storyboard.Children.Add(animation1)
   storyboard.SetTargetName(animation2, "AnimatedBitmapEffect")
   storyboard.SetTargetProperty(animation2, New PropertyPath(GrayScaleExtendedCommandBitmapEffect.GreenFactorProperty))
   element.RegisterName("AnimatedBitmapEffect", effect)
   storyboard.Children.Add(animation2)
   storyboard.SetTargetName(animation3, "AnimatedBitmapEffect")
   storyboard.SetTargetProperty(animation3, New PropertyPath(GrayScaleExtendedCommandBitmapEffect.BlueFactorProperty))
   element.RegisterName("AnimatedBitmapEffect", effect)
   storyboard.Children.Add(animation3)

   storyboard.Begin(element)
End Sub
C#Copy Code
public void GrayScaleExtendedCommandBitmapEffectExample(FrameworkElement element) 

   // Initialize Effect 
   GrayScaleExtendedCommandBitmapEffect effect = new GrayScaleExtendedCommandBitmapEffect(); 
   effect.RedFactor = 300; 
   effect.GreenFactor = 590; 
   effect.BlueFactor = 110; 
   element.BitmapEffect = effect; 
 
   // Initialize Animations 
   Int32Animation animation1 = new Int32Animation(); 
   animation1.From = 0; 
   animation1.To = 1000; 
   animation1.By = 1; 
   animation1.Duration = new Duration(TimeSpan.FromSeconds(2.0)); 
   animation1.AutoReverse = true; 
   animation1.RepeatBehavior = RepeatBehavior.Forever; 
   Int32Animation animation2 = new Int32Animation(); 
   animation2.From = 0; 
   animation2.To = 1000; 
   animation2.By = 1; 
   animation2.Duration = new Duration(TimeSpan.FromSeconds(3.0)); 
   animation2.AutoReverse = true; 
   animation2.RepeatBehavior = RepeatBehavior.Forever; 
   Int32Animation animation3 = new Int32Animation(); 
   animation3.From = 0; 
   animation3.To = 1000; 
   animation3.By = 1; 
   animation3.Duration = new Duration(TimeSpan.FromSeconds(4.0)); 
   animation3.AutoReverse = true; 
   animation3.RepeatBehavior = RepeatBehavior.Forever; 
 
   // Initialize and run Storyboard 
   Storyboard storyboard = new Storyboard(); 
   Storyboard.SetTargetName(animation1, "AnimatedBitmapEffect"); 
   Storyboard.SetTargetProperty(animation1, new PropertyPath(GrayScaleExtendedCommandBitmapEffect.RedFactorProperty)); 
   element.RegisterName("AnimatedBitmapEffect", effect); 
   storyboard.Children.Add(animation1); 
   Storyboard.SetTargetName(animation2, "AnimatedBitmapEffect"); 
   Storyboard.SetTargetProperty(animation2, new PropertyPath(GrayScaleExtendedCommandBitmapEffect.GreenFactorProperty)); 
   element.RegisterName("AnimatedBitmapEffect", effect); 
   storyboard.Children.Add(animation2); 
   Storyboard.SetTargetName(animation3, "AnimatedBitmapEffect"); 
   Storyboard.SetTargetProperty(animation3, new PropertyPath(GrayScaleExtendedCommandBitmapEffect.BlueFactorProperty)); 
   element.RegisterName("AnimatedBitmapEffect", effect); 
   storyboard.Children.Add(animation3); 
 
   storyboard.Begin(element); 
}
XAMLCopy Code
<Page Title="CSAnimateEffect" Height="391" Width="300" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:lteffects="clr-namespace:Leadtools.Windows.Media.Effects.Color;assembly=Leadtools.Windows.Media.Effects"> 
  <Grid> 
    <Image Margin="10,10,10,10" HorizontalAlignment="Center" VerticalAlignment="Center" Source="C:\Program Files\LEAD Technologies, Inc\LEADTOOLS 16\Images\slave.jpg"> 
      <Image.BitmapEffect> 
        <lteffects:GrayScaleExtendedCommandBitmapEffect x:Name="MyBitmapEffect" /> 
      </Image.BitmapEffect> 
      <Image.Triggers> 
        <EventTrigger RoutedEvent="Image.Loaded"> 
          <BeginStoryboard> 
            <Storyboard> 
              <Int32Animation Storyboard.TargetName="MyBitmapEffect" Storyboard.TargetProperty="RedFactor" From="0" To="1000" Duration="0:0:2" RepeatBehavior="Forever" AutoReverse="True" /> 
              <Int32Animation Storyboard.TargetName="MyBitmapEffect" Storyboard.TargetProperty="GreenFactor" From="0" To="1000" Duration="0:0:3" RepeatBehavior="Forever" AutoReverse="True" /> 
              <Int32Animation Storyboard.TargetName="MyBitmapEffect" Storyboard.TargetProperty="BlueFactor" From="0" To="1000" Duration="0:0:4" RepeatBehavior="Forever" AutoReverse="True" /> 
            </Storyboard> 
          </BeginStoryboard> 
        </EventTrigger> 
      </Image.Triggers> 
    </Image> 
  </Grid> 
</Page>

Remarks

  • RedFactor + GreenFactor + BlueFactor must equal 1000. (Internally the values are divided by 1000).

  • For each pixel in the image the red, green and blue values are modified by the RedFactor, GreenFactor and BlueFactor properties, respectively. This allows the user to give more weight to one color, essentially enhancing that color, before the pixel is converted to grayscale.
  • For example, if an object of this class has the RedFactor set to 500, the GreenFactor set to 250 and the BlueFactor set to 250, the red value of each pixel will get 50 percent of the weight when determining the grayscale value. The green value will get 25 percent of the weight and the blue value will get 25 percent of the weight when determining the grayscale value. This highlights or enhances the red in the image, prior to conversion to grayscale.

Inheritance Hierarchy

System.Object
   System.Windows.Threading.DispatcherObject
      System.Windows.DependencyObject
         System.Windows.Freezable
            System.Windows.Media.Animation.Animatable
               System.Windows.Media.Effects.BitmapEffect
                  Leadtools.Windows.Media.Effects.RasterCommandBitmapEffect
                     Leadtools.Windows.Media.Effects.Color.GrayScaleExtendedCommandBitmapEffect

Requirements

Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Vista, Windows Server 2003 family, Windows Server 2008 family

See Also