Je souhaite dessiner une polyligne (une ligne continue composée d'un ou plusieurs segments de ligne) sur PictureBox
. En cela, nous pouvons créer plusieurs lignes en spécifiant les extrémités de chaque segment ainsi que calculer la distance de chaque segment qui est la distance de chaque ligne.Dessiner une polyligne sur PictureBox
Répondre
Si vous voulez faire un picturebox, la meilleure chose est d'hériter votre propre contrôle d'un PictureBox
et fournir les fonctionnalités à ajouter extrémités lorsque vous la souris sur la picturebox.
Vous stockez ensuite la position du clic de la souris dans une liste et remplacez le OnPaint
pour dessiner vos points de terminaison (vous avez choisi un carré 4x4) et une ligne entre chaque point de terminaison. Voici le code de base:
public class EndPointPictureBox : PictureBox
{
private List<PointF> points = new List<PointF>();
public EndPointPictureBox()
{
}
protected override void OnMouseDown(MouseEventArgs e)
{
points.Add(new PointF(e.X,e.Y));
base.OnMouseDown(e);
this.Invalidate();
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
Graphics g = pe.Graphics;
foreach(var point in points)
g.DrawRectangle(Pens.Black,point.X-2.0f,point.Y-2.0f,4.0f,4.0f);
if(points.Count>1)
g.DrawLines(Pens.Black,points.ToArray());
}
}
Vous pouvez maintenant ajouter à un formulaire comme un PictureBox, et choisissez votre imagge pour aller à l'intérieur de la manière habituelle.
Si vous essayez de cliquer plusieurs fois dans la zone d'image, vous verrez qu'elle dessine vos points de terminaison comme votre exemple d'image. Voici un exemple de ma machine:
Ensuite, votre prochaine exigence, obtenir la distance entre les points d'extrémité. Cela peut être fait en ajoutant une classe pour représenter un EndPoint
avec une référence à son voisin. Ensuite, ses quelques mathématiques pythagoriciens simples pour obtenir la distance entre le point courant et le suivant:
public class EndPoint
{
public EndPoint(int index, List<PointF> points)
{
this.Position = points[index];
if (index < points.Count - 1)
this.Next = points[index + 1];
}
public PointF Position { get; private set; }
public PointF Next { get; private set; }
public double GetDistanceToNext()
{
if(this.Next == PointF.Empty)
return 0;
var xDiff = this.Position.X - Next.X;
var yDiff = this.Position.Y - Next.Y;
return Math.Abs(Math.Sqrt((xDiff*xDiff) + (yDiff*yDiff)));
}
}
Et vous pouvez ajouter une méthode à votre nouveau PictureBox pour obtenir cette liste de ceux-ci:
public List<EndPoint> GetEndPoints()
{
var list = new List<EndPoint>();
for(var i=0;i<points.Count;i++)
list.Add(new EndPoint(i,points));
return list;
}
- 1. Dessiner une flèche sur une PictureBox en C#
- 2. Dessiner dans C# dans une PictureBox
- 3. Dessiner une grille de points sur un PictureBox en C#
- 4. comment dessiner une chaîne fixe sur pictureBox en utilisant C#?
- 5. Comment dessiner une polyligne en utilisant gMap et jQuery?
- 6. Comment dessiner un picturebox dans VB6
- 7. Transparence graphique sur PictureBox
- 8. Comment dessiner une polyligne entre deux endroits (en connaissant la latitude/longitude) sur la carte Google?
- 9. place sur polyligne avec une distance spécifique
- 10. Comment dessiner du texte sur une image?
- 11. Dessiner un polygone autour d'une polyligne dans google maps
- 12. C# déplacer une polyligne
- 13. google maps v2 dessiner polyligne dépend de la vitesse
- 14. Comment dessiner polyligne avec multi-marqueur dans google map
- 15. php fonction GD pour dessiner polyligne du tableau
- 16. Comment dessiner une zone de texte modifiable sur un PictureBox dans C#
- 17. Comment dessiner sur une image PictureBox lorsque le contrôle est redimensionné?
- 18. jQuery SVG créant une polyligne, firefox bug?
- 19. Dessin d'une grille sur un PictureBox
- 20. contrôle transparent sur PictureBox
- 21. dessin sur picturebox image
- 22. Comment dessiner des ellipses avec un intervalle dans PictureBox
- 23. dessine une polyligne entre plusieurs marqueurs
- 24. Chargement d'une image dans le PictureBox et dessiner un rectangle
- 25. Dessin avec des discussions sur une image PictureBox
- 26. Dessiner sur une image
- 27. Comment dessiner Polyline sur Google Map
- 28. Devrais-je utiliser un PictureBox ou un Panel pour dessiner sur mon Formulaire?
- 29. Fonction js pour polyligne sur gmap
- 30. La polyligne du dessin génère une ligne pixellisée
Joliment a demandé. Les images sont les meilleures. Les gens aiment mal comprendre! – Bitterblue