Créer un objet grille

Résolu
danpower Messages postés 12 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 6 janvier 2008 - 4 janv. 2008 à 14:23
danpower Messages postés 12 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 6 janvier 2008 - 6 janv. 2008 à 12:33
Bonjour, pour un projet personnel j'ai besoin d'une classe qui permettrait de dessiner une grille dans un form,pour le moment j'ai mis une picturebox dans le formulaire de démarrage et à partir de  form1_load je passe en paramètre la picture box à ma classe grille via le constructeur de ma classe.

à partir de là j'utilise le paramètre passé en byref pour faire:"g=picturebox.creategraphics" g étant définis de la manière qui suit dans ma classe :"Dim g As System.Drawing.Graphics"

quand par la suite j'essaie de faire un g.drawline(pinceau,x1,y1,x2,y2) avec pinceau défini au préalable dans ma classe grille de la manière qui suit :"Dim pinceau As New System.Drawing.Pen(System.Drawing.Color.Red)" rien ne se passe,à savoir que ma ligne n'est pas tracée dans ma picturebox....quelcun a une idée concernant l'origine du mal???
 merci d'avance

14 réponses

danpower Messages postés 12 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 6 janvier 2008
6 janv. 2008 à 12:33
voili voilà,au fait il y avait pas besoin d'aller trop loin,il existe une procédure toute faite qui permet de redessiner tout ce que le graphics a fait avec une couleur(en occurance celle du background de mon panel en ce qui me concerne) et le tour est joué,le nom de cette fonction? clear:-) je sais,mais il parait que les choses les plus évidente sont aussi les plus difficile à voir. merci encore pour ton aide et bonne fin de week end.
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
4 janv. 2008 à 16:27
Bonjour

C'est normal, il faut mettre le dessin dans l'event Paint de ta PictureBox.

Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
0
danpower Messages postés 12 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 6 janvier 2008
4 janv. 2008 à 18:37
mais mon but est de faire une classe qui peut dessiner une grilledans la picturebox d'un formulaire appelant...il faudrait que je mette quoi dans l'event paint?l'appel au constructeur de ma classe?merci
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
4 janv. 2008 à 22:14
Salut

1 --> Pourquoi une picturebox, on est plus dans vb6?

2 --> Voici un code qui fait une diagonale en vb.net directement dans la form (mybase.paint) et sur une picturebox1 (un peu factorisé)

Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint, PictureBox1.Paint
        Dim g As Graphics = e.Graphics()
        g.DrawLine(Pens.Blue, 0, 0, Me.Width, Me.Height)
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
danpower Messages postés 12 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 6 janvier 2008
5 janv. 2008 à 11:12
1->je suis en vb.net en effet et si je veux le faire dans une picturebox c'est que ça me sembait plus propre mais je suis ouvert à toutes solutions.

en revanche,j'ai vraiment besoin de faire en sorte que  ce soit via un objet et non directement à partir du form que je puisse dessiner cette grille...

quand je le fais directement dans le form ça marche sans soucis mais quand je veux le faire à partir d'un objet qui prendrait en référence la picturebox ou le form lui même ça ne marche plus...est-ce un problème de communication entre objets? merci encore.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
5 janv. 2008 à 11:22
Je ne comprends pas ta remarque et ton probleme

Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles 
PictureBox1.Paint
        Dim g As Graphics = e.Graphics()
        g.DrawLine(Pens.Blue, 0, 0, Me.Width, Me.Height)
End Sub

Fonctionne sur ma picturebox1
0
danpower Messages postés 12 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 6 janvier 2008
5 janv. 2008 à 11:47
j'aimerais faire un objet qui selon certain paramètres passés au constructeur dessine une grille dans un formulaire appelant,le code qui dessine la grille doit être dans l'objet et non dans le form...

quand je met le code dans le form ça fontionne il y a pas de soucis,mais si je veux passer par un objet pour le faire en passant le form en référence au constructeur de l'objet ça ne fonctionne pas...
0
danpower Messages postés 12 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 6 janvier 2008
5 janv. 2008 à 12:06
je viens de construire mon objet directement dans la méthode paint au lieu de load et comme ça,ça fonctionne,merci beaucoup,en revanche j'ai lu que l'évènement paint se déclanchait directement au chargement du form,le moyen pour l'appeler si le form est déjà lancé c'est?merci encore.
0
danpower Messages postés 12 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 6 janvier 2008
5 janv. 2008 à 12:37
tant que j'y suis.j'aimerais pouvoir effacer la grille dans le panel,il y a-t-il un moyen plus propre de le faire que de repasser sur mes lignes avec la couleur de background du panel,genre une fonction toute faite associée au panel'ou encore au graphics?quelcun a une idée?merci d'avance
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
5 janv. 2008 à 12:41
L'évenement Paint est il me semble appelé des que l'objet est considéré comme à redessiner.
C'est a dire en win32 invalidate.
Et la toute la fonctionne paint est appellé donc il faut quelle soit la plus légère possible et quelle evite d'appeler des fonctions qui utilise des ressources IO
par exemple base de données et fichier, pour éviter des clignotements.

Pour justifier il suffit de mettre ta form en reduit et apres tu la restaure, tu la maximise.
et si tu mets un point d'arret dans la fonction paint tu seras arreté à chaque action.

Bon courage
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
5 janv. 2008 à 13:29
Pour l'histoire des effacements, ne sait pas trop comment il faut gérer.

Regardes le tutoriel
http://www.unvrai.com/fichiers/CS/GDI/GraphismeGDI.pdf

Et quand tu auras trouvé n'hésite pas à mettre la réponse.

Bon courage
0
danpower Messages postés 12 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 6 janvier 2008
5 janv. 2008 à 14:02
ok,merci beaucoup pour ton aide,bon week end.
0
danpower Messages postés 12 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 6 janvier 2008
6 janv. 2008 à 10:55
j'arrive pas à lire le tuto que tu m'as envoyé(mon pc doit avoir un petit soucis je suppose),je vais essayer de trouver une solution par un autre moyen,merci quand même.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
6 janv. 2008 à 11:05
C'est un petit pdf, avec acrobat 7.0 il passait
0
Rejoignez-nous