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

Signaler
Messages postés
186
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 janvier 2008
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
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

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
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
Messages postés
186
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 janvier 2008

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 ?
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
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