|
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
|
Traduction
Source
|
Test de positionnement dans la couche visuelle
Cette rubrique comprend les sections suivantes.
- Scénarios de test de positionnement
- Prise en charge du test de positionnement
- Test de positionnement et ordre de plan
- Utilisation du test de positionnement par défaut
- Utilisation d'un rappel des résultats du test de positionnement
- Utilisation d'un rappel de filtre du test de positionnement
- Substitution du test de positionnement par défaut
- Rubriques connexes
-
Test de positionnement sur des objets non UIElement : ce scénario est d'application si vous effectuez un test de positionnement sur des objets non UIElement, tels que DrawingVisual ou des objets graphiques. -
Test de positionnement à l'aide d'une géométrie : ce scénario s'applique si vous devez effectuer un test de positionnement à l'aide d'un objet de géométrie plutôt que de la valeur de coordonnée d'un point. -
Test de positionnement sur plusieurs objets : ce scénario est d'application lorsque vous devez effectuer un test de positionnement sur plusieurs objets, tels que des objets chevauchants. Vous pouvez obtenir des résultats pour tous les visuels croisant une géométrie ou un point, et pas seulement pour le premier. -
Ignorer la stratégie de test de positionnement UIElement : ce scénario est d'application lorsque vous devez ignorer la stratégie de test de positionnement UIElement, qui prend en compte des facteurs tels que le fait qu'un élément est désactivé ou invisible.
Remarque
|
|---|
|
|
Remarque
|
|---|
|
|
Remarque
|
|---|
|
|
// 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 de positionnement
Remarque
|
|---|
|
|
// Respond to the right mouse button down event by setting up a hit test results callback. private void OnMouseRightButtonDown(object sender, MouseButtonEventArgs e) { // Retrieve the coordinate of the mouse position. Point pt = e.GetPosition((UIElement)sender); // Clear the contents of the list used for hit test results. hitResultsList.Clear(); // Set up a callback to receive the hit test result enumeration. VisualTreeHelper.HitTest(myCanvas, null, new HitTestResultCallback(MyHitTestResult), new PointHitTestParameters(pt)); // Perform actions on the hit test results list. if (hitResultsList.Count > 0) { Console.WriteLine("Number of Visuals Hit: " + hitResultsList.Count); } }
// Return the result of the hit test to the callback. public HitTestResultBehavior MyHitTestResult(HitTestResult result) { // Add the hit test result to the list that will be processed after the enumeration. hitResultsList.Add(result.VisualHit); // Set the behavior to return visuals at all z-order levels. return HitTestResultBehavior.Continue; }
Remarque
|
|---|
|
|
// Respond to the mouse wheel event by setting up a hit test filter and results enumeration. private void OnMouseWheel(object sender, MouseWheelEventArgs e) { // Retrieve the coordinate of the mouse position. Point pt = e.GetPosition((UIElement)sender); // Clear the contents of the list used for hit test results. hitResultsList.Clear(); // Set up a callback to receive the hit test result enumeration. VisualTreeHelper.HitTest(myCanvas, new HitTestFilterCallback(MyHitTestFilter), new HitTestResultCallback(MyHitTestResult), new PointHitTestParameters(pt)); // Perform actions on the hit test results list. if (hitResultsList.Count > 0) { ProcessHitTestResultsList(); } }
// Filter the hit test values for each object in the enumeration. public HitTestFilterBehavior MyHitTestFilter(DependencyObject o) { // Test for the object value you want to filter. if (o.GetType() == typeof(Label)) { // Visual object and descendants are NOT part of hit test results enumeration. return HitTestFilterBehavior.ContinueSkipSelfAndChildren; } else { // Visual object is part of hit test results enumeration. return HitTestFilterBehavior.Continue; } }
Remarque
|
|---|
|
|
// Override default hit test support in visual object. protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters) { Point pt = hitTestParameters.HitPoint; // Perform custom actions during the hit test processing, // which may include verifying that the point actually // falls within the rendered content of the visual. // Return hit on bounding rectangle of visual object. return new PointHitTestResult(this, pt); }
// Override default hit test support in visual object. protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters) { // Perform actions based on hit test of bounding rectangle. // ... // Return results of base class hit testing, // which only returns hit on the geometry of visual objects. return base.HitTestCore(hitTestParameters); }
Remarque