Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

affichage d'images dans un control panel et scintillement

3 réponses
Avatar
maxime_phan
Bonjour, voila mon probl=E8me:
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=E9pond a levenement onPaint de mon
panel:


private BufferedGraphicsContext currentContext;
private BufferedGraphics myBuffer;

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

// code pour levenement onpaint du panel qui est appel=E9 a
chaque invalidate
private void MonPanel_Paint(object sender, PaintEventArgs e)
{
if (Bg !=3D 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=E9s cela, l'affichage scintille, quelqu'un a une id=E9e?

Merci d'avance

3 réponses

Avatar
Gilles TOURREAU
Le Sat, 23 Jun 2007 09:10:00 +0200,
a écrit:

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
Avatar
maxime_phan
c'était comme ça dans l'exemple msdn je crois, je vais essayer avec un
seul.
Avatar
maxime_phan
c'était comme ça dans l'exemple msdn je crois, je vais essayer avec un
seul.