ReyeMe

WPF button with spotlight under mouse

Mar 28th, 2018
160
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

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×