affichage d'images dans un control panel et scintillement

Le
maxime_phan
Bonjour, voila mon problème:
je recoit des images d'une source que je veux afficher dans mon
application sur un control "panel", j'affiche aussi d'autres images
par dessus. j'essaie d'utilise le double buffering, voila mon code:

System.Windows.Forms.Panel MonPanel; //voila le panel ou je veux
afficher mes images.

chaque fois que je recois une nouvelle image, je fais appel a
MonPanel.Invalidate() pour le rafraichir.

voici le code de la fonction qui répond a levenement onPaint de mon
panel:


private BufferedGraphicsContext currentContext;
private BufferedGraphics myBuffer;

//ce code est dans le constructeur de ma form
currentContext = BufferedGraphicsManager.Current;
myBuffer = currentContext.Allocate(MonPanel.CreateGraphics(),
MonPanel.DisplayRectangle);

// code pour levenement onpaint du panel qui est appelé a
chaque invalidate
private void MonPanel_Paint(object sender, PaintEventArgs e)
{
if (Bg != null) //bg est la Bitmap que je recoit
myBuffer.Graphics.DrawImage(Bg, new Point(0, 0));
myBuffer.Graphics.DrawImage(ECard.Background, 0, 0, 500,
375);

myBuffer.Render();
myBuffer.Render(MonPanel.CreateGraphics());
}

malgrés cela, l'affichage scintille, quelqu'un a une idée?

Merci d'avance
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles TOURREAU
Le #12189521
Le Sat, 23 Jun 2007 09:10:00 +0200,

Bonjour, voila mon problème:
je recoit des images d'une source que je veux afficher dans mon
application sur un control "panel", j'affiche aussi d'autres images
par dessus. j'essaie d'utilise le double buffering, voila mon code:

System.Windows.Forms.Panel MonPanel; //voila le panel ou je veux
afficher mes images.

chaque fois que je recois une nouvelle image, je fais appel a
MonPanel.Invalidate() pour le rafraichir.

voici le code de la fonction qui répond a levenement onPaint de mon
panel:


private BufferedGraphicsContext currentContext;
private BufferedGraphics myBuffer;

//ce code est dans le constructeur de ma form
currentContext = BufferedGraphicsManager.Current;
myBuffer = currentContext.Allocate(MonPanel.CreateGraphics(),
MonPanel.DisplayRectangle);

// code pour levenement onpaint du panel qui est appelé a
chaque invalidate
private void MonPanel_Paint(object sender, PaintEventArgs e)
{
if (Bg != null) //bg est la Bitmap que je recoit
myBuffer.Graphics.DrawImage(Bg, new Point(0, 0));
myBuffer.Graphics.DrawImage(ECard.Background, 0, 0, 500,
375);

myBuffer.Render();
myBuffer.Render(MonPanel.CreateGraphics());
}

malgrés cela, l'affichage scintille, quelqu'un a une idée?

Merci d'avance




Pourquoi tu fais appel 2 fois à la méthode Render ?

Un simple myBuffer.Render() devrait suffir...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
maxime_phan
Le #12189511
c'était comme ça dans l'exemple msdn je crois, je vais essayer avec un
seul.
maxime_phan
Le #12189501
c'était comme ça dans l'exemple msdn je crois, je vais essayer avec un
seul.
Publicité
Poster une réponse
Anonyme