ReyeMe

WPF button with spotlight under mouse

Mar 28th, 2018
146
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. WPF style:
  2.  
  3.                 <Style x:Key="SpotlightButton" TargetType="{x:Type Button}">
  4.                 <Setter Property="Background" Value="Transparent"/>
  5.                 <Setter Property="BorderThickness" Value="0"/>
  6.                 <Setter Property="BorderBrush" Value="Transparent"/>
  7.                 <Setter Property="Height" Value="40"/>
  8.                 <Setter Property="Foreground" Value="WhiteSmoke"/>
  9.                 <Setter Property="FontSize" Value="16"/>
  10.                 <Setter Property="Template">
  11.                     <Setter.Value>
  12.                         <ControlTemplate TargetType="{x:Type Button}">
  13.                             <Border Background="{TemplateBinding BorderBrush}">
  14.                                 <Grid ClipToBounds="True" MouseMove="MoveMouseSpotLight">
  15.                                     <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
  16.                                     <Grid Opacity="0" x:Name="mouseTracker" Margin="-250,-250,0,0" Width="500" Height="500" VerticalAlignment="Top" HorizontalAlignment="Left" RenderTransformOrigin="0.5,0.5">
  17.                                         <Grid.Background>
  18.                                             <RadialGradientBrush x:Name="gradRadial" RadiusX="0.45" RadiusY="0.45">
  19.                                                 <GradientStop Color="#33FFFFFF" Offset="0.0"/>
  20.                                                 <GradientStop Color="#00000000" Offset="1.0"/>
  21.                                             </RadialGradientBrush>
  22.                                         </Grid.Background>
  23.                                         <Grid.RenderTransform>
  24.                                             <TranslateTransform X="0" Y="0"/>
  25.                                         </Grid.RenderTransform>
  26.                                     </Grid>
  27.                                 </Grid>
  28.                             </Border>
  29.                             <ControlTemplate.Triggers>
  30.                                 <Trigger Property="IsMouseOver" Value="True">
  31.                                     <Trigger.EnterActions>
  32.                                         <BeginStoryboard>
  33.                                             <Storyboard>
  34.                                                 <DoubleAnimation Storyboard.TargetName="mouseTracker" Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.3" />
  35.                                             </Storyboard>
  36.                                         </BeginStoryboard>
  37.                                     </Trigger.EnterActions>
  38.                                     <Trigger.ExitActions>
  39.                                         <BeginStoryboard>
  40.                                             <Storyboard>
  41.                                                 <DoubleAnimation Storyboard.TargetName="mouseTracker" Storyboard.TargetProperty="Opacity" To="0" Duration="0:0:0.3" />
  42.                                             </Storyboard>
  43.                                         </BeginStoryboard>
  44.                                     </Trigger.ExitActions>
  45.                                 </Trigger>
  46.                                 <Trigger Property="IsPressed" Value="True">
  47.                                     <Setter Property="Background" Value="#33FFFFFF"/>
  48.                                 </Trigger>
  49.                             </ControlTemplate.Triggers>
  50.                         </ControlTemplate>
  51.                     </Setter.Value>
  52.                 </Setter>
  53.             </Style>
  54.  
  55. Mouse event here:
  56.  
  57. /// <summary>
  58. /// Move button spotlight around
  59. /// </summary>
  60. /// <param name="sender">Grid from control template</param>
  61. /// <param name="e">Mouse event</param>
  62. private void MoveMouseSpotLight(object sender, MouseEventArgs e)
  63. {
  64.     try
  65.     {
  66.         DependencyObject light = LogicalTreeHelper.FindLogicalNode((Grid)sender, "mouseTracker");
  67.         Point mouse = Mouse.GetPosition((Grid)sender);
  68.         light.SetValue(FrameworkElement.RenderTransformProperty, new TranslateTransform(mouse.X, mouse.Y));
  69.     }
  70.     catch (Exception ex)
  71.     {
  72.         ex.ToString();
  73.     }
  74. }
RAW Paste Data