LEADTOOLS WPF and Silverlight (Leadtools.Windows.Media.Effects assembly) Send comments on this topic. | Back to Introduction - All Topics | Help Version 17.0.3.30
CircularShutterEffect Class
See Also  Members  
Leadtools.Windows.Media.Effects Namespace : CircularShutterEffect Class



The CircularShutterEffect Class supports WPF/Silverlight.

Creates a circular or elliptical shutter effect by using a center point, radius, aspect ratio and a color to clear the area outside the shutter. Supported in Silverlight

Object Model

CircularShutterEffect Class

Syntax

Visual Basic (Declaration) 
Public Class CircularShutterEffect 
   Inherits System.Windows.Media.Effects.ShaderEffect
   Implements IAnimatable 
Visual Basic (Usage)Copy Code
Dim instance As CircularShutterEffect
C# 
public class CircularShutterEffect : System.Windows.Media.Effects.ShaderEffect, IAnimatable  
C++/CLI 
public ref class CircularShutterEffect : public System.Windows.Media.Effects.ShaderEffect, IAnimatable  

Example

Visual BasicCopy Code
Class CircularShutterEffectExampleWindow
      Inherits Window
      Private theViewer As ImageViewer
      Public Sub New()
         Dim sp As New StackPanel()
         Content = sp

         theViewer = New ImageViewer()

         theViewer.HorizontalAlignment = HorizontalAlignment.Center
         theViewer.VerticalAlignment = VerticalAlignment.Top
         theViewer.ImageHorizontalAlignment = HorizontalAlignment.Left
         theViewer.ImageVerticalAlignment = VerticalAlignment.Top

         sp.Children.Add(theViewer)

         ' Load an image into the viewer
         theViewer.Source = New BitmapImage(New Uri(System.IO.Path.Combine(LEAD_VARS.ImagesDir, "Cannon.jpg")))

         Title = "CircularShutterEffect - Click and and move the mouse cursor on the image to see the effect"

         AddHandler theViewer.PreviewMouseDown, AddressOf theViewer_PreviewMouseDown
         AddHandler theViewer.MouseMove, AddressOf theViewer_MouseMove
         AddHandler theViewer.MouseUp, AddressOf theViewer_MouseUp
      End Sub

      Private Sub theViewer_PreviewMouseDown(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
         Dim effect As New CircularShutterEffect()

         Dim pos As Point = e.GetPosition(theViewer)

         Dim source As BitmapSource = DirectCast(theViewer.Source, BitmapSource)
         If Not source Is Nothing Then
            effect.Center = New Point( _
               (1.0 * pos.X) / source.PixelWidth, _
               (1.0 * pos.Y) / source.PixelHeight)

            effect.Radius = 0.25
            effect.AspectRatio = 1.0
            effect.ClearColor = Colors.Blue
            theViewer.ImageEffect = effect
         End If
      End Sub

      Private Sub theViewer_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
         Dim effect As CircularShutterEffect = DirectCast(theViewer.ImageEffect, CircularShutterEffect)
         If Not effect Is Nothing Then
            Dim pos As Point = e.GetPosition(theViewer)

            Dim source As BitmapSource = DirectCast(theViewer.Source, BitmapSource)
            If Not source Is Nothing Then
               effect.Center = New Point( _
                  (1.0 * pos.X) / source.PixelWidth, _
                  (1.0 * pos.Y) / source.PixelHeight)
            End If
         End If
      End Sub

      Private Sub theViewer_MouseUp(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
         If Not theViewer.ImageEffect Is Nothing Then
            theViewer.ImageEffect = Nothing
         End If
      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 CircularShutterEffectExampleWindow : Window
   {
      private ImageViewer theViewer;
      public CircularShutterEffectExampleWindow()
      {
         StackPanel sp = new StackPanel();
         Content = sp;

         theViewer = new ImageViewer();

         theViewer.HorizontalAlignment = HorizontalAlignment.Center;
         theViewer.VerticalAlignment = VerticalAlignment.Top;
         theViewer.ImageHorizontalAlignment = HorizontalAlignment.Left;
         theViewer.ImageVerticalAlignment = VerticalAlignment.Top;

         sp.Children.Add(theViewer);

         // Load an image into the viewer
         theViewer.Source = new BitmapImage(new Uri(System.IO.Path.Combine(LEAD_VARS.ImagesDir, "Cannon.jpg")));

         Title = "CircularShutterEffect - Click and and move the mouse cursor on the image to see the effect";

         theViewer.PreviewMouseDown += new MouseButtonEventHandler(theViewer_PreviewMouseDown);
         theViewer.MouseMove += new MouseEventHandler(theViewer_MouseMove);
         theViewer.MouseUp += new MouseButtonEventHandler(theViewer_MouseUp);
      }

      private void theViewer_PreviewMouseDown(object sender, MouseButtonEventArgs e)
      {
         CircularShutterEffect effect = new CircularShutterEffect();

         Point pos = e.GetPosition(theViewer);

         BitmapSource source = theViewer.Source as BitmapSource;
         if(source != null)
         {
            effect.Center = new Point(
               (1.0 * pos.X) / source.PixelWidth,
               (1.0 * pos.Y) / source.PixelHeight);

            effect.Radius = 0.25;
            effect.AspectRatio = 1.0;
            effect.ClearColor = Colors.Blue;
            theViewer.ImageEffect = effect;
         }
      }

      private void theViewer_MouseMove(object sender, MouseEventArgs e)
      {
         CircularShutterEffect effect = theViewer.ImageEffect as CircularShutterEffect;
         if(effect != null)
         {
            Point pos = e.GetPosition(theViewer);

            BitmapSource source = theViewer.Source as BitmapSource;
            if(source != null)
            {
               effect.Center = new Point(
                  (1.0 * pos.X) / source.PixelWidth,
                  (1.0 * pos.Y) / source.PixelHeight);
            }
         }
      }

      private void theViewer_MouseUp(object sender, MouseButtonEventArgs e)
      {
         if(theViewer.ImageEffect != null)
         {
            theViewer.ImageEffect = null;
         }
      }
   }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
SilverlightCSharpCopy Code
class CircularShutterEffectExampleWindow : UserControl
{
   private ImageViewer theViewer;
   public CircularShutterEffectExampleWindow()
   {
      StackPanel sp = new StackPanel();
      Content = sp;

      theViewer = new ImageViewer();

      theViewer.HorizontalAlignment = HorizontalAlignment.Center;
      theViewer.VerticalAlignment = VerticalAlignment.Top;
      theViewer.ImageHorizontalAlignment = HorizontalAlignment.Left;
      theViewer.ImageVerticalAlignment = VerticalAlignment.Top;

      sp.Children.Add(theViewer);

      // Load an image into the viewer
      theViewer.Source = new BitmapImage(new Uri(LeadtoolsExamples.Common.ImagesPath.Path + "Cannon.jpg"));

      theViewer.MouseMove += new MouseEventHandler(theViewer_MouseMove);
   }

   private void theViewer_PreviewMouseDown(object sender, MouseButtonEventArgs e)
   {
      CircularShutterEffect effect = new CircularShutterEffect();

      Point pos = e.GetPosition(theViewer);

      BitmapSource source = theViewer.Source as BitmapSource;
      if(source != null)
      {
         effect.Center = new Point(
            (1.0 * pos.X) / source.PixelWidth,
            (1.0 * pos.Y) / source.PixelHeight);

         effect.Radius = 0.25;
         effect.AspectRatio = 1.0;
         effect.ClearColor = Colors.Blue;
         theViewer.ImageEffect = effect;
      }
   }

   private void theViewer_MouseMove(object sender, MouseEventArgs e)
   {
      CircularShutterEffect effect = theViewer.ImageEffect as CircularShutterEffect;
      if(effect != null)
      {
         Point pos = e.GetPosition(theViewer);

         BitmapSource source = theViewer.Source as BitmapSource;
         if(source != null)
         {
            effect.Center = new Point(
               (1.0 * pos.X) / source.PixelWidth,
               (1.0 * pos.Y) / source.PixelHeight);
         }
      }
   }

   private void theViewer_MouseUp(object sender, MouseButtonEventArgs e)
   {
      if(theViewer.ImageEffect != null)
      {
         theViewer.ImageEffect = null;
      }
   }
}
SilverlightVBCopy Code
Class CircularShutterEffectExampleWindow
   Inherits UserControl
   Private theViewer As ImageViewer
   Public Sub New()
      Dim sp As New StackPanel()
      Content = sp

      theViewer = New ImageViewer()

      theViewer.HorizontalAlignment = HorizontalAlignment.Center
      theViewer.VerticalAlignment = VerticalAlignment.Top
      theViewer.ImageHorizontalAlignment = HorizontalAlignment.Left
      theViewer.ImageVerticalAlignment = VerticalAlignment.Top

      sp.Children.Add(theViewer)

      ' Load an image into the viewer
      theViewer.Source = New BitmapImage(New Uri(LeadtoolsExamples.Common.ImagesPath.Path + "Cannon.jpg"))

      AddHandler theViewer.MouseMove, AddressOf theViewer_MouseMove
   End Sub

   Private Sub theViewer_PreviewMouseDown(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
      Dim effect As New CircularShutterEffect()

      Dim pos As Point = e.GetPosition(theViewer)

      Dim source As BitmapSource = DirectCast(theViewer.Source, BitmapSource)
      If Not source Is Nothing Then
         effect.Center = New Point( _
            (1.0 * pos.X) / source.PixelWidth, _
            (1.0 * pos.Y) / source.PixelHeight)

         effect.Radius = 0.25
         effect.AspectRatio = 1.0
         effect.ClearColor = Colors.Blue
         theViewer.ImageEffect = effect
      End If
   End Sub

   Private Sub theViewer_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
      Dim effect As CircularShutterEffect = DirectCast(theViewer.ImageEffect, CircularShutterEffect)
      If Not effect Is Nothing Then
         Dim pos As Point = e.GetPosition(theViewer)

         Dim source As BitmapSource = DirectCast(theViewer.Source, BitmapSource)
         If Not source Is Nothing Then
            effect.Center = New Point( _
               (1.0 * pos.X) / source.PixelWidth, _
               (1.0 * pos.Y) / source.PixelHeight)
         End If
      End If
   End Sub

   Private Sub theViewer_MouseUp(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
      If Not theViewer.ImageEffect Is Nothing Then
         theViewer.ImageEffect = Nothing
      End If
   End Sub
End Class
XAMLCopy Code
<Window x:Class="CircularShutterEffectExample" 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:CircularShutterEffect Center="0.5,0.5" Radius="0.25" AspectRatio="1.0" ClearColor="Blue"></leadEffects:CircularShutterEffect>
      </leadControls:ImageViewer.ImageEffect>
    </leadControls:ImageViewer>
  </StackPanel>
</Window>

Inheritance Hierarchy

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.CircularShutterEffect

Requirements

Target Platforms: Silverlight 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only)

See Also