Comment savoir si GraphicsPath contient un point en C #

J’utilise .NET pour dessiner un diagramme et je souhaite mettre en surbrillance des objects lorsque l’utilisateur clique dessus. C’est facile quand une figure est entièrement contenue dans un rectangle:

if (figure.Bounds.Contains(p)) // bounds is a rectangle 

Mais je ne sais pas comment le gérer si la figure est un GraphicsPath complexe.

J’ai défini le GraphicsPath suivant pour la figure (le cercle vert).

GraphicsPath

Je veux mettre en surbrillance la figure lorsque l’utilisateur clique dessus. J’aimerais savoir si un Point est contenu dans ce GraphicsPath .

Des idées? Merci d’avance.

Je ne connais pas DrawingPath (vous voulez probablement dire; graphics.DrawPath), mais GraphicsPath dispose de la méthode IsVisible pour vérifier si un point se trouve dans le chemin.

 bool isInPath = graphicsObj.IsVisible(point) 

L’utilisation de .IsOutlineVisible et de .IsVisible ensemble couvre le tout, bordure et bordure, pour cet exemple de rectangle, mais comme vous le savez, GraphicsPath peut fonctionner pour différentes formes.

  bool b = gp.IsVisible(point) || gp.IsOutlineVisible(point, pen); 

Pour cela en code

  Rectangle r = new Rectangle(new Point(50, 100), new Size(500, 100)); bool b; // say Point p is set. // say Pen pen is set. using (var gp = new GraphicsPath()) using (var pen = new Pen(Color.Black, 44)) { gp.AddRectangle(r); bool b = gp.IsVisible(point) || gp.IsOutlineVisible(point, pen); }