
Utilisation du test d'atteinte par défaut
Vous pouvez déterminer si un point se trouve dans la géométrie d'un objet visuel en utilisant la méthode HitTest pour spécifier un objet visuel et la valeur de coordonnée d'un point sur lesquels effectuer le test. Le paramètre d'objet visuel identifie le point de départ au sein de l'arborescence visuelle pour la recherche de test d'atteinte. Si un objet visuel dont la géométrie contient la coordonnée est retrouvé dans l'arborescence visuelle, il prend la valeur de la propriété VisualHit d'un objet HitTestResult. L'objet HitTestResult est ensuite retourné à partir de la méthode HitTest. Si le point n'est pas contenu dans la sous-arborescence visuelle sur laquelle vous effectuez le test d'atteinte, HitTest retourne null.
Remarque : |
|---|
Le test d'atteinte par défaut retourne toujours l'objet de premier niveau dans l'ordre de plan. Pour identifier tous les objets visuels, y compris ceux masqués partiellement ou totalement, utilisez un rappel des résultats du test d'atteinte. |
La valeur de coordonnée que vous passez au paramètre du point pour la méthode HitTest doit être relative par rapport à l'espace de coordonnées de l'objet visuel qui fait l'objet du test d'atteinte. Par exemple, si vous imbriquez des objets visuels définis à (100, 100) dans l'espace de coordonnées du parent, un test d'atteinte d'un enfant visuel à (0, 0) équivaut à un test d'atteinte à (100, 100) dans l'espace de coordonnées du parent.
Le code suivant montre comment configurer des gestionnaires d'événement de souris pour un objet UIElement utilisé pour capturer des événements utilisés pour le test d'atteinte.
// Respond to the left mouse button down event by initiating the hit test.
private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
// Retrieve the coordinate of the mouse position.
Point pt = e.GetPosition((UIElement)sender);
// Perform the hit test against a given portion of the visual object tree.
HitTestResult result = VisualTreeHelper.HitTest(myCanvas, pt);
if (result != null)
{
// Perform action on hit visual object.
}
}
Impact de l'arborescence visuelle sur le test d'atteinte
Le point de départ défini au sein de l'arborescence visuelle détermine les objets retournés lors de l'énumération du test d'atteinte des objets. Si vous effectuez un test d'atteinte sur plusieurs objets, l'objet visuel utilisé comme point de départ dans l'arborescence d'éléments visuels doit être l'ancêtre commun de tous les objets en question. Par exemple, si vous voulez effectuer un test d'atteinte de l'élément bouton et du visuel du dessin dans le diagramme suivant, vous devez définir comme point de départ dans l'arborescence visuelle l'ancêtre commun de ces deux objets. Dans ce cas, l'élément zone de dessin est l'ancêtre commun de l'élément bouton et du visuel du dessin.
Diagramme d'une hiérarchie d'une arborescence visuelle
.gif)
Remarque : |
|---|
La propriété IsHitTestVisible obtient ou définit une valeur qui déclare si un objet dérivé de UIElement peut être retourné en tant que résultat de test d'atteinte depuis une partie de son contenu rendu. Cela vous permet de modifier de manière sélective l'arborescence visuelle afin de déterminer les objets visuels concernés par un test d'atteinte. |