Hit Result Behavior : Mouse « Windows Presentation Foundation « VB.Net






Hit Result Behavior

Hit Result Behavior
    
<Window x:Class="WpfApplication1.HitTestExample"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="WpfApplication1" Height="300" Width="300">


  <Canvas x:Name="canvas1"
    MouseLeftButtonDown="OnMouseLeftButtonDown">
    <Rectangle Canvas.Left="20" Canvas.Top="20" Width="100"
      Height="60" Stroke="Black" Fill="LightBlue" Opacity="0.7" />

    <Rectangle Canvas.Left="70" Canvas.Top="50" Width="100"
      Height="60" Stroke="Black" Fill="LightBlue" Opacity="0.7" />


    <Rectangle Canvas.Left="150" Canvas.Top="80" Width="100"
      Height="60" Stroke="Black" Fill="LightBlue" Opacity="0.7" />


    <Rectangle Canvas.Left="20" Canvas.Top="100" Width="50"
      Height="50" Stroke="Black" Fill="LightBlue" Opacity="0.7" />


    <Rectangle Canvas.Left="40" Canvas.Top="60" Width="50"
      Height="50" Stroke="Black" Fill="LightBlue" Opacity="0.7" />


    <Rectangle Canvas.Left="30" Canvas.Top="130" Width="50"
      Height="50" Stroke="Black" Fill="LightBlue" Opacity="0.7" />


  </Canvas>
</Window>

//File:Window.xaml.vb
Imports System
Imports System.Collections.Generic
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Shapes


Namespace WpfApplication1
  Public Partial Class HitTestExample
    Inherits Window
    Private hitList As New List(Of Rectangle)()
    Private hitArea As New EllipseGeometry()
    Public Sub New()
      InitializeComponent()
    End Sub
    Private Overloads Sub OnMouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs)
      For Each rect As Rectangle In canvas1.Children
        rect.Fill = Brushes.Red
      Next

      Dim pt As Point = e.GetPosition(canvas1)
      hitArea = New EllipseGeometry(pt, 1.0, 1.0)
      hitList.Clear()
      VisualTreeHelper.HitTest(canvas1, Nothing, New HitTestResultCallback(AddressOf HitTestCallback), New GeometryHitTestParameters(hitArea))
      If hitList.Count > 0 Then
        For Each rect As Rectangle In hitList
          rect.Fill = Brushes.Blue
        Next
        Console.WriteLine("You hit " & hitList.Count.ToString() & " rectangles.")
      End If
    End Sub
    Public Function HitTestCallback(result As HitTestResult) As HitTestResultBehavior
      Dim intersectionDetail__1 As IntersectionDetail = DirectCast(result, GeometryHitTestResult).IntersectionDetail
      Select Case intersectionDetail__1
        Case IntersectionDetail.FullyContains
          hitList.Add(DirectCast(result.VisualHit, Rectangle))
          Return HitTestResultBehavior.[Continue]
        Case IntersectionDetail.Intersects
          Return HitTestResultBehavior.[Continue]
        Case IntersectionDetail.FullyInside
          Return HitTestResultBehavior.[Continue]
        Case Else
          Return HitTestResultBehavior.[Stop]
      End Select
    End Function
  End Class
End Namespace

   
    
    
    
  








Related examples in the same category

1.MouseDown action on LineMouseDown action on Line
2.Button PreviewMouseLeftButtonDown action and MouseLeftButtonDown actionButton PreviewMouseLeftButtonDown action and MouseLeftButtonDown action
3.Grid MouseLeftButtonDown action and PreviewMouseLeftButtonDown actionGrid MouseLeftButtonDown action and PreviewMouseLeftButtonDown action
4.Detect whether the mouse button is pressed or released using the MouseButtonState property.Detect whether the mouse button is pressed or released using the MouseButtonState property.
5.Handler MouseLeftButtonDown and MouseLeftButtonUp eventsHandler MouseLeftButtonDown and MouseLeftButtonUp events
6.Make an object follow the mouse pointer as it moves on the screen.Make an object follow the mouse pointer as it moves on the screen.
7.Use Mouse.AddPreviewMouseDownHandler(myEllipse, PreviewMouseDownEllipse);Use Mouse.AddPreviewMouseDownHandler(myEllipse, PreviewMouseDownEllipse);
8.Use Mouse.AddMouseDownHandler(myEllipse, MouseDownEllipse);Use Mouse.AddMouseDownHandler(myEllipse, MouseDownEllipse);
9.Use Mouse.PreviewMouseDown /Mouse.MouseDown Attribute from Grid elementUse Mouse.PreviewMouseDown /Mouse.MouseDown Attribute from Grid element
10.A line which monitors the mouse entering its areaA line which monitors the mouse entering its area
11.Mouse Position and TranslateTransformMouse Position and TranslateTransform
12.Mouse PositionMouse Position
13.Get mouse position with Mouse.GetPositionGet mouse position with Mouse.GetPosition
14.Replease mouse with Mouse.Capture(null)Replease mouse with Mouse.Capture(null)
15.Retrieving the mouse position relative to controls on a WindowRetrieving the mouse position relative to controls on a Window
16.Mouse cursor override and clearMouse cursor override and clear
17.Check the mouse event sourceCheck the mouse event source
18.Use the Mouse Wheel action methods that are defined by the IScrollInfo interfaceUse the Mouse Wheel action methods that are defined by the IScrollInfo interface
19.Change control background in mouse enter and leaveChange control background in mouse enter and leave
20.Use EventSetter to add mouse event handlerUse EventSetter to add mouse event handler
21.Mouse.LostMouseCaptureEventMouse.LostMouseCaptureEvent
22.Use Mouse.Capture to let a Control capture an eventUse Mouse.Capture to let a Control capture an event
23.Point Hit TestPoint Hit Test