Point Hit Test with VisualTreeHelper.HitTest : UI Element « Windows Presentation Foundation « C# / CSharp Tutorial






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

using System;
using System.IO;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Navigation;

namespace InputExamples
{
  public partial class PointHitTest
  {
    public PointHitTest()
    {
      this.InitializeComponent();
    }
    
    protected override void OnInitialized(EventArgs e)
    {
      base.OnInitialized(e);
      CompositionTarget.Rendering += this.CompositionTarget_Rendering;
    }

    private void CompositionTarget_Rendering(object sender, EventArgs e)
    {
        Point position = Mouse.GetPosition(RectangleArea);
      VisualTreeHelper.HitTest(RectangleArea,null,new HitTestResultCallback(HitTestResultHandler),
              new PointHitTestParameters(position)
      );
    }
    
    public HitTestResultBehavior HitTestResultHandler(HitTestResult result)
    {
      PointHitTestResult hitResult = (PointHitTestResult)result;
      Console.WriteLine(((FrameworkElement)hitResult.VisualHit).Name);
      Console.WriteLine(hitResult.PointHit.ToString());
         return HitTestResultBehavior.Continue;
    }
  }
}
WPF Point Hit Test With Visual Tree Helper Hit Test








24.48.UI Element
24.48.1.Parent and child timelines with default HoldEnd FillBehaviorParent and child timelines with default HoldEnd FillBehavior
24.48.2.Freezables and elementFreezables and element
24.48.3.Define a resource at the page root level on a FrameworkElement and reference itDefine a resource at the page root level on a FrameworkElement and reference it
24.48.4.Print Logical TreePrint Logical Tree
24.48.5.Print Visual TreePrint Visual Tree
24.48.6.Find enclosure componentFind enclosure component
24.48.7.Logical Visual Tree SampleLogical Visual Tree Sample
24.48.8.About Dialog with Tree WalkingAbout Dialog with Tree Walking
24.48.9.Point Hit Test with VisualTreeHelper.HitTestPoint Hit Test with VisualTreeHelper.HitTest
24.48.10.Find inner visual elementFind inner visual element
24.48.11.Print Visual(Canvas)Print Visual(Canvas)
24.48.12.Change control background in mouse enter and leaveChange control background in mouse enter and leave
24.48.13.Changing graphical elementsChanging graphical elements
24.48.14.Change the Visibility property of a UIElement.Change the Visibility property of a UIElement.
24.48.15.Change FillChange Fill
24.48.16.Extend FrameworkElement to create your own shape
24.48.17.Dump Content Property Attributes