2012-09-24 2 views
0

Je cherchais depuis environ 12 heures maintenant à essayer de trouver un moyen de dessiner des points sur un PictureBox, j'ai trouvé beaucoup de threads donnant des exemples de code et pourtant je ne peux pas semblent avoir fini ce que je veux.Dessiner une grille de points sur un PictureBox en C#

En essance ce que je suis en train de faire est la suivante:

J'ai fenêtres forment un PictureBox là-dessus, je n'ai pas l'image dans le PictureBox, mais j'ai le BackColor réglé sur Noir. Je suis en train de créer une nouvelle image bitmap puis exécutez le code pour créer des points blancs dans le style suivant:

.......... 
    .......... 
    .......... 
    .......... 

Ainsi me donner un coup d'oeil de style de grille sur la PictureBox. Cependant, à chaque tentative j'ai échoué, donc si quelqu'un pouvait m'aider à comprendre comment travailler avec cela, je l'apprécierais.

Ma dernière tentative était d'utiliser la méthode ControlPaint.DrawGrid, comme ceci:

private void picBox_Display_Paint(object sender, PaintEventArgs e) 
{ 
    Size size = new Size(35, 35); 
    Rectangle rect = new Rectangle(0,0,picBox_Display.Width, picBox_Display.Height); 
    ControlPaint.DrawGrid(Graphics.FromHwnd(picBox_Display.Handle), rect, size, Color.White); 
} 

Le code ci-dessus est dans la méthode d'événement Paint PictureBox. Je sais qu'il passe par le code parce que j'ai un point d'arrêt à la fin de la méthode, mais rien ne se passe. Je ne suis pas sûr de comprendre comment fonctionne ControlPaint.DrawGrid, je suis supposé ajouter quelque chose d'autre?

J'ai essayé d'utiliser la méthode Bitmap.SetPixel plus tôt aujourd'hui, mais j'ai continué à avoir des problèmes avec elle et je cherchais toujours d'autres moyens d'y arriver.

Toute aide serait appréciée. Merci!

+0

Voulez-vous simplement dessiner des points à l'écran, ou en fait dessiner des points sur un bitmap? c'est-à-dire que le bitmap n'est là que pour réaliser le dessin des points? – MikeKulls

+0

Le résultat final est que je veux dessiner des points à une image bitmap, puis l'assigner à la pictureBox.Image, mais j'ai eu des problèmes à faire cela alors j'ai vu la méthode ControlPaint.DrawGrid et pensée id l'essayer. mais j'ai toujours eu des problèmes, mais après avoir exécuté le programme exe sans débogage je pouvais voir les points, mais comme je l'ai dit Im essayant toujours de trouver un moyen de mettre les points sur une image et je pensais avoir les mêmes problèmes avec le vs débogueur donc je vais revenir pour essayer la méthode SetPixel, malheureusement j'ai déjà supprimé ce code précédent si mal à travailler dessus. – roadmaster

Répondre

1

Vous devez utiliser e.Graphics pour cela. Notez également que le débogage de ce type de code peut être difficile, car le débogage invalide souvent le dessin et doit donc être retravaillé. Le dernier paramètre est censé être la couleur de fond par rapport à ce que vous peignez, il semble donc qu'il dessine le contraire de ce que vous spécifiez. Si votre arrière-plan est noir, vous devez passer en Color.Black

ControlPaint.DrawGrid(e.Graphics, rect, size, Color.Black); 
+0

Merci apparemment vous l'avez eu sur tous les 3 comptes, je suis vraiment surpris par le problème de débogage, qui peut avoir été mon plus gros problème, j'utilise toujours la fonctionnalité de débogage de VS. Avec ceci je devrais mal m'assurer que son fonctionnement en utilisant l'exe la fonction de construction crée, merci pour votre aide ... – roadmaster

+0

@MarkSweetman Le débogage est bien c'est juste que si vous vous arrêtez dans l'événement de peinture alors cela amène souvent le studio visuel au-dessus de le haut de votre application. Cela signifie que votre application n'est plus "peinte" donc lorsque vous l'exécutez, elle doit peindre à nouveau, ce qui provoque une nouvelle rupture, etc. – MikeKulls

Questions connexes