Mega Code Archive

 
Categories / VB.Net Tutorial / WPF
 

Point Hit Test with VisualTreeHelper HitTest

<StackPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"   xmlns:d="http://schemas.microsoft.com/expression/interactivedesigner/2006"   mc:Ignorable="d"   x:Class="InputExamples.PointHitTest"    Width="640" Height="480">   <StackPanel.Resources>     <Storyboard x:Key="OnLoaded"/>   </StackPanel.Resources>   <StackPanel.Triggers>     <EventTrigger RoutedEvent="FrameworkElement.Loaded">       <BeginStoryboard x:Name="OnLoaded_BeginStoryboard" Storyboard="{DynamicResource OnLoaded}"/>     </EventTrigger>   </StackPanel.Triggers>   <Rectangle Fill="Red" Margin="20" Width="200" Height="200" x:Name="RectangleArea"/> </StackPanel> //File:Window.xaml.vb Imports System Imports System.IO Imports System.Net Imports System.Windows Imports System.Windows.Controls Imports System.Windows.Data Imports System.Windows.Input Imports System.Windows.Media Imports System.Windows.Media.Animation Imports System.Windows.Navigation Namespace InputExamples   Public Partial Class PointHitTest     Public Sub New()       Me.InitializeComponent()     End Sub     Protected Overrides Sub OnInitialized(e As EventArgs)       MyBase.OnInitialized(e)       AddHandler CompositionTarget.Rendering, AddressOf Me.CompositionTarget_Rendering     End Sub     Private Sub CompositionTarget_Rendering(sender As Object, e As EventArgs)       Dim position As Point = Mouse.GetPosition(RectangleArea)       VisualTreeHelper.HitTest(RectangleArea, Nothing, New HitTestResultCallback(AddressOf HitTestResultHandler), New PointHitTestParameters(position))     End Sub     Public Function HitTestResultHandler(result As HitTestResult) As HitTestResultBehavior       Dim hitResult As PointHitTestResult = DirectCast(result, PointHitTestResult)       Console.WriteLine(DirectCast(hitResult.VisualHit, FrameworkElement).Name)       Console.WriteLine(hitResult.PointHit.ToString())       Return HitTestResultBehavior.[Continue]     End Function   End Class End Namespace