Il est facile de dessiner des flèches de la même façon que vous avez travaillé comment dessiner des lignes sur un PictureBox
dans a previous question.
Tout ce que vous devez faire est de spécifier un ou StartCap
EndCap
pour l'objet Pen
vous utilisez déjà pour tracer des lignes. Intuitivement, la propriété StartCap
vous permet de spécifier un style de majuscule utilisé au début des lignes que vous dessinez avec l'objet Pen
, tandis que la propriété EndCap
vous permet de spécifier un style de majuscule pour la fin des lignes.
Plusieurs styles différents LineCap
sont disponibles, y compris:
Flat Specifies a flat line cap.
Square Specifies a square line cap.
Round Specifies a round line cap.
Triangle Specifies a triangular line cap.
NoAnchor Specifies no anchor.
SquareAnchor Specifies a square anchor line cap.
RoundAnchor Specifies a round anchor cap.
DiamondAnchor Specifies a diamond anchor cap.
ArrowAnchor Specifies an arrow-shaped anchor cap.
Custom Specifies a custom line cap.
AnchorMask Specifies a mask used to check whether a line cap is an anchor cap.
Vous trouverez sans doute le style ArrowAnchor
plus utile dans ce cas: Il suffit de spécifier un ArrowAnchor
que le style LineCap
soit pour le début ou la fin de la ligne (en fonction de la direction dans laquelle vous voulez que la flèche pointe).
Le code suivant dessinera un vert, face à flèche droite avec une épaisseur de ligne de 4:
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
//Create a new pen to draw the arrow with
using (Pen p = new Pen(Brushes.Green, 4f))
{
//Specify the EndCap, because we're drawing a right-facing arrow
p.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
//Draw the arrow
e.Graphics.DrawLine(p, 0, 0, 30, 45);
}
}
+1 grande, comme toujours –
C'est parfait, juste une chose est de savoir comment puis-je faire de sorte que la flèche que je tire des séjours là quand je dessine une autre flèche, car au moment de la dernière flèche tirée disparaît quand je commence à en dessiner un nouveau? Comment puis-je le réparer pour qu'ils restent? Merci –
@Chris Bacon, Vous les stockez dans une liste: 'Liste> points = nouvelle Liste >();', ajoutez-les à la liste dans MouseUp: 'points .Add (Tuple.Create (mouseDownPosition, mouseMovePosition)) 'et les dessine dans une boucle foreach dans pictureBox1_Paint. –