danpower
Messages postés12Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention 6 janvier 2008
-
4 janv. 2008 à 14:23
danpower
Messages postés12Date d'inscriptiondimanche 16 décembre 2007StatutMembreDerniè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
danpower
Messages postés12Date d'inscriptiondimanche 16 décembre 2007StatutMembreDerniè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.
danpower
Messages postés12Date d'inscriptiondimanche 16 décembre 2007StatutMembreDerniè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
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
danpower
Messages postés12Date d'inscriptiondimanche 16 décembre 2007StatutMembreDerniè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.
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 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
danpower
Messages postés12Date d'inscriptiondimanche 16 décembre 2007StatutMembreDerniè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...
danpower
Messages postés12Date d'inscriptiondimanche 16 décembre 2007StatutMembreDerniè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.
danpower
Messages postés12Date d'inscriptiondimanche 16 décembre 2007StatutMembreDerniè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
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 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.
danpower
Messages postés12Date d'inscriptiondimanche 16 décembre 2007StatutMembreDerniè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.