Créer un objet grille [Résolu]

danpower 12 Messages postés dimanche 16 décembre 2007Date d'inscription 6 janvier 2008 Dernière intervention - 4 janv. 2008 à 14:23 - Dernière réponse : danpower 12 Messages postés dimanche 16 décembre 2007Date d'inscription 6 janvier 2008 Dernière intervention
- 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
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
danpower 12 Messages postés dimanche 16 décembre 2007Date d'inscription 6 janvier 2008 Dernière intervention - 6 janv. 2008 à 12:33
3
Merci
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.

Merci danpower 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 121 internautes ce mois-ci

Commenter la réponse de danpower
NHenry 14211 Messages postés vendredi 14 mars 2003Date d'inscription 24 juin 2018 Dernière intervention - 4 janv. 2008 à 16:27
0
Merci
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
Commenter la réponse de NHenry
danpower 12 Messages postés dimanche 16 décembre 2007Date d'inscription 6 janvier 2008 Dernière intervention - 4 janv. 2008 à 18:37
0
Merci
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
Commenter la réponse de danpower
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 4 janv. 2008 à 22:14
0
Merci
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
Commenter la réponse de nhervagault
danpower 12 Messages postés dimanche 16 décembre 2007Date d'inscription 6 janvier 2008 Dernière intervention - 5 janv. 2008 à 11:12
0
Merci
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.
Commenter la réponse de danpower
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 5 janv. 2008 à 11:22
0
Merci
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
Commenter la réponse de nhervagault
danpower 12 Messages postés dimanche 16 décembre 2007Date d'inscription 6 janvier 2008 Dernière intervention - 5 janv. 2008 à 11:47
0
Merci
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...
Commenter la réponse de danpower
danpower 12 Messages postés dimanche 16 décembre 2007Date d'inscription 6 janvier 2008 Dernière intervention - 5 janv. 2008 à 12:06
0
Merci
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.
Commenter la réponse de danpower
danpower 12 Messages postés dimanche 16 décembre 2007Date d'inscription 6 janvier 2008 Dernière intervention - 5 janv. 2008 à 12:37
0
Merci
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
Commenter la réponse de danpower
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 5 janv. 2008 à 12:41
0
Merci
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
Commenter la réponse de nhervagault
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 5 janv. 2008 à 13:29
0
Merci
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
Commenter la réponse de nhervagault
danpower 12 Messages postés dimanche 16 décembre 2007Date d'inscription 6 janvier 2008 Dernière intervention - 5 janv. 2008 à 14:02
0
Merci
ok,merci beaucoup pour ton aide,bon week end.
Commenter la réponse de danpower
danpower 12 Messages postés dimanche 16 décembre 2007Date d'inscription 6 janvier 2008 Dernière intervention - 6 janv. 2008 à 10:55
0
Merci
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.
Commenter la réponse de danpower
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 6 janv. 2008 à 11:05
0
Merci
C'est un petit pdf, avec acrobat 7.0 il passait
Commenter la réponse de nhervagault

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.