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).
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); }