affichage d'images dans un control panel et scintillement
3 réponses
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:
//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);
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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:
//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);
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
Le Sat, 23 Jun 2007 09:10:00 +0200, maxime_phan@hotmail.com
<maxime_phan@hotmail.com> 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:
//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);
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:
//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);