Deux bugs d'affichage dans mon appli (redraw trop rapide & transparance)
cs_Elektordi
Messages postés186Date d'inscriptionmardi 31 décembre 2002StatutMembreDernière intervention21 janvier 2008
-
20 févr. 2005 à 14:02
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 2008
-
20 févr. 2005 à 17:00
Comme indiqué dans le titre, j'ai deux petits problèmes dans mon appli qui est basé sur des controles personalisées (contenant des picturesbox avec des bmp) qui (les controles) sont déplacés par des timers, pour que le tout forme une animation !
Mes problèmes sont:
1. Certains timers ont plus de 30 objects à déplacer, or les objects ne sont pas déplacés en même temps, ce qui provoque des bugs graphiques ! J'ai essayé this.SuspendLayout(); et this.ResumeLayout(); avant et après la phase de dessis mais le problème subsiste... Comment dire à la form de ne faire qu'un seul redraw à la fin de la procédure...
2. Quand deux controles se "croisent", je voudrait qu'il y ait de la transparance... J'ai choisi une couleur commune à tous mes bmps pour la transparance, or il n'y a pas de TransparencyKey (ou un truc du genre) pour les controles, contrairement au forms ! Comment faire ? (ps: j'ai essayé de remplacer les bmp par des gifs mais c'est encore pire: le fond de la form ne se redéssine pas et je vois mon code dans VS à travers mes controles !!!
Merci...
A voir également:
Deux bugs d'affichage dans mon appli (redraw trop rapide & transparance)
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 20 févr. 2005 à 16:16
Tu es obligé d'utiliser des PictureBox ? Sinon, plutot que de te
trimbaler avec 30 PictureBox par controle, pourquoi n'override tu pas
la méthode OnPaint de ton control ?
Ce qui te permettrait, pour la transparence, d'utiliser
ImageAttributes.SetColorKey, pour definir une "plage de couleur de
transparence".
Et c'est cette instance de d'ImageAttributes que tu passerais en
parametre a la méthode DrawImage pour que la transparence soir gérée.
(Attention, ca peut quand meme etre tres lourd pour ton application,
selon les images ou il doit redefinir la transparence a chaque fois
qu'il dessine le controle)
cs_Elektordi
Messages postés186Date d'inscriptionmardi 31 décembre 2002StatutMembreDernière intervention21 janvier 2008 20 févr. 2005 à 16:51
J'ai avancé depuis: j'ai enlevé les picture box des controles et utilisé leur background picture...
Deux petites questions avec ta méthode:
1. Quand je modifie la location de mon controle, je doit refaire un draw image ?
2. J'ai des classes Drawing.Bitmap pêtes avec mes images... C'est bon ?
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 20 févr. 2005 à 17:00
1 -> Quand tu vas modifier la location du control, la fenetre va
etre repeinte, donc le control aussi. Mais je sais pas si la méthode
OnPaint du control est appelée. Si oui, alors le DrawImage est appelé
aussi.
2-> Si tu fais un DrawImage(TonBitmap, ...., TonImageAttribute),
oui, c'est bon. (En esperant que j'ai bien compris ta question).
Cependant, si ta méthode fonctionne, alors autant la garder