Dessiner une grille sur une PictureBox
Je suis actuellement en train de travailler avec un contrôle pictureBox. Je vais avoir des difficultés à dessiner une grille sur la zone de l'image qui est approximativement de la taille de 2 x 2 places. Maintenant, le code ci-dessous est seulement de me donner une ligne tirée en travers. Comment puis-je proplery dessiner une grille sur le dessus de la pictureBox?
CODE:
private Graphics g1;
public Form1()
{
InitializeComponent();
pictureBox1.Image = new Bitmap(500, 500);
g1 = Graphics.FromImage(this.pictureBox1.Image);
Pen gridPen = new Pen(Color.Black, 2);
g1.DrawLine(gridPen, 0, 0, 100, 100);
}
Ce que j'aimerais réaliser:
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé cette question:
Efficacement dessiner une grille en Windows Forms
Voici l'essentiel:
Personnaliser en conséquence
Form1_Paint
je croyais qu'il sera à l'intérieur de l'événementpictureBox
? Je suis assez novice en C# et votre aide sera appréciée.pictureBox_Click
événement, donc je dicided de copier/coller votre code de raccordement de l'événementpictureBox_Paint
mais peut-être que c'est le problème. Comment dois-je appeler cet événementpictureBox_Paint
correctement?MikeB est accepté réponse est, bien sûr, de les corriger, mais l'OP était encore confus, et les gens sont toujours en voyant cela, je suis donc l'ajout d'une clarification de la réponse (oui, 8 ans plus tard).
Mike méthode
autonome méthode qui doit être appelé au bon moment. Pour ce faire, vous devez l'enregistrer auprès de l'événement OnPaint répartiteur, de sorte qu'il sera appelé à chaque événement OnPaint se produit. Pour ce faire, vous mettez la ligne suivante dans certains endroit très pratique comme dans le constructeur de votre classe:
Cette approche est OK, mais si vous obtenez lorsque vous avez vraiment besoin de dessin de performance, il va vous faire mal, car il des coûts supplémentaires pour le PaintEventArgs être construits et transmis à vous. Une meilleure approche est de remplacer la méthode OnPaint de la classe parent et de mettre votre code de dessin directement dans la méthode OnPaint. De cette façon, vous n'avez pas à accrocher les gestionnaires d'événements et il s'exécute plus rapidement. Le code est presque le même:
Une dernière suggestion: il n'est presque jamais une bonne idée de faire le dessin dans un contrôle PictureBox. Beaucoup de gens le font, mais pas beaucoup d'experts le faire de cette façon. Ils n'ont pas été conçu pour être une zone de dessin -- ils héritent de la même fonctionnalité que toutes les formes de contrôles ont-et ils ajoutent de la complexité et de vous ralentir, sans ajouter une fonctionnalité utile à tous. Vous serez plus heureux si vous vous débarrasser de la pictureboxes et il suffit de dessiner directement sur la forme ou sur le panneau qui a été la tenue de votre zone d'image.