[C# + GDI] Panel transparent: + Pb de rafraichissement

cs_wolveryn Messages postés 2 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 22 juin 2007 - 20 juin 2007 à 16:45
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 - 22 juin 2007 à 16:07
Salut,

J'ai crée un panel transparent qui marche plutôt bien en ce qui
concerne la transparence; mais le problème est quand je fais bouger
l'ascenseur, les parties du panel qui apparaissent sont floues et ont
de sérieux problèmes d'encre.

voici ma méthode onpaint:
if(!isPainting)
{
isPainting = true;
backBrush = new SolidBrush(Color.FromArgb(this.OpacityAsByte, base.BackColor));
tempBitmap = new Bitmap(this.Width, this.Height);
tempGraphics = Graphics.FromImage(tempBitmap);
 
tempGraphics.FillRectangle(backBrush, 0,0,this.Width, this.Height);
e.Graphics.DrawImage(tempBitmap, e.ClipRectangle);
isPainting = false;
isResizing = false;
}

Si quelqu'un a une astuce ou n'importe quoi qui pourrait me mettre sur la voie qu'il n'hésite pas à me faire signe.
merci.

3 réponses

survcopt Messages postés 224 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 13 mai 2022 3
22 juin 2007 à 08:44
essaie le double buffering , ya deja une reponse dans le forum la dessus

www.survey-copter.com
0
cs_wolveryn Messages postés 2 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 22 juin 2007
22 juin 2007 à 14:28
j'aimerai bien essayer une de ces solutions (buffering) mais etant donne que je debute dans ce domaine la, j'ai pour l'instant epuise mes options.
et j'ai cherche avant de poster donc visiblement je suis passe a cote de la solution dont tu parles alors si possible passe moi le lien de cette solution

merci
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
22 juin 2007 à 16:07
Tu peux faire le changement au niveau de la Form qui contient ton
panel, en mettant à true la propriété DoubleBuffered de la Form.


Si ça ne suffit pas, alors tu peux essayer d'utiliser les
BufferedGraphics (dans System.Drawing). Pour un exemple d'utilisation
de BufferedGraphics tu peux jeter un oeil sur une de mes sources (dans le projet "Eyes", regarde le code de la Form "Eyes").


Une autre possibilité est de déclarer ton panel en mode "double
buffer", mais contrairement aux Forms, il faut cette fois rajouter "à
la main" cette propriété.

Working as designed
0
Rejoignez-nous