Deux bugs d'affichage dans mon appli (redraw trop rapide & transparance)

cs_Elektordi Messages postés 186 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 janvier 2008 - 20 févr. 2005 à 14:02
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 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...

3 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
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)


Mx
0
cs_Elektordi Messages postés 186 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 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 ?
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
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


Mx
0
Rejoignez-nous