philagood
Messages postés13Date d'inscriptionmardi 2 octobre 2007StatutMembreDernière intervention 7 mai 2015
-
18 mars 2015 à 21:24
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
19 mars 2015 à 19:57
Bonjour a tous,
voila mon problème,
J'ai une form composer d'un panel avec une picturebox a l'intérieur.
Je dessine des rectangles a l'interieur de ma picturebox
Pour dessiner les rectangles j'utilise 2 boucles For (i,j) pour faire varier les coordonnées et une variable COLOR_CASE pour faire varier la couleur.
Je lance le dessin dans l'événement bouton_click
voila le code a l'intérieur des boucles:
Dim Rect As New Rectangle(j, i, 1, 1)
Dim PIC As Graphics = Me.PictureBox.CreateGraphics
PIC.DrawRectangle(New Pen COLOR_CASE), Rect)
PIC.Dispose()
mon problème est que lorsque la form et le panel ont atteints leur taille maxi que j'ai définit, et que la taille de la picturebox est plus grande pour s'adapter au dessin, les scrollbars apparaissent. Les dessins apparaissent comme je le veux mais lorsque je touche au scrollbar pour regarder plus bas, tous s'efface et redevient comme avant que je dessine.
C'est comme si je dessinais sur la picturebox et non a l'intérieur.
Je pensais que mon code était bon, si quelqu'un a une idée, je lui en serais reconnaissant.
Je vous remercie d'avance de l'aide que vous m'apporterez.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 19 mars 2015 à 06:47
Bonjour,
Je ne connais pas VB.Net.
Mais le comportement exposé me donne à penser qu'il ne s'agit que d'une question de persistance à définir.
Sous VB6, existe pour cela la propriété AutoRedraw.
Je crois avoir compris que sous VB.Net, cette persistance était assurée en deux temps, comme exposé ici : http://bytes.com/topic/visual-basic-net/answers/366825-autoredraw-simillar-property
philagood
Messages postés13Date d'inscriptionmardi 2 octobre 2007StatutMembreDernière intervention 7 mai 2015 19 mars 2015 à 19:48
Merci a tous
et surtout a ucfoutu, ta solution était la bonne.
Il faut déssiner dans une image puis charger l'image dans la picturebox
Dim IMG As New Bitmap(PictureBox.Width, PictureBox.Height)
Dim Rect As New Rectangle(j, i, 1, 1)
Dim PIC As Graphics = Graphics.FromImage(IMG)
PIC.DrawRectangle(New Pen COLOR_CASE), Rect)
PIC.Dispose()
PictureBox.image = IMG