GDI+

Résolu
LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009 - 1 nov. 2005 à 01:09
cs_rodcobalt22 Messages postés 193 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 février 2016 - 14 déc. 2006 à 15:24
Bonsoir,

Alors voilà ... J'utilisais la librairie GDI+, avec les
System.Drawning, et j'en passe et des meilleurs ... Et j'ai remarquer
un truc. Quand je fais des traits ou des points avec les methodes des
instances de l'objet Graphics, ça s'affiche bien tant que je ne réduis
pas la fenêtre ou tant qu'une autre fenêtre ne passe pas devant la
fenêtre qui contient les différents éléments dessinés dessus.

En gros, les dessins restent tant qu'ils sont au premier plan ... Pourquoi ? Et comment palier ce problème ?

Merci !

LocalStone

7 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
1 nov. 2005 à 01:16
Salut,

Le dessin n'est pas persistant, donc il faut redessiner à chaque refresh de la surface de dessin.
En l'occurence pour accélérer/faciliter les choses tu peux probablement mettre en place un "buffer" : tu dessines sur un Bitmap et tu dessines ce bitmap sur ta surface, ce qui te permet de ne pas avoir à tout redessiner à chaque refresh de la surface de dessin : il te suffit de redessiner l'image.

/*
coq
MVP Visual C#
*/
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
1 nov. 2005 à 03:31
Salut, l'évènement Paint est déclenché chaque fois que la forme doit être redessinée après avoir été invalidée.

protected override void OnPaint( PaintEventArgs e )
{
// base.OnPaint( e );

Graphics g = e.Graphics;
g.DrawImage( bitmap, this.ClientRectangle );
}
0
LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009
1 nov. 2005 à 12:11
Merci beaucoup ... Franchement, ça doit
faire une dizaine de question que je pose et j'ai tout le temps eu des
réponses ... Merci !

LocalStone
0
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
4 nov. 2005 à 17:59
Tu peux ensuite utiliser
SetStyle (ControlStyles.DoubleBuffer, true);
qui va te réduire le scintillement si tu redimensionne ta fenêtre par exemple.

Ou OptimisedDoubleBuffer sous la V2 du framework (ça veut tout dire mdr)

-------------------------
Trambert le vert
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rodcobalt22 Messages postés 193 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 février 2016
14 déc. 2006 à 14:59
Bonjour à tous,

Est il possible d'effectue une mise en buffer (doublebuffer) sur un panel car je ne trouve pas la méthode SetStyle sur ce controls (qui pourant hérite de controle ??), mes membres avancés ne sont pas masqué.
Sur plusieurs poste j'ai un scintillement que je n'arrive pas à réduire. je dessine tout dans une image que je redessine par la suite grâce à l'événement paint (e.graphics.drawImage(...)) du controle de type panel.
Merci beaucoup si vous avec une solution car là je sèche.

RodCobalt22, vous salue bien ;-)
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
14 déc. 2006 à 15:19
Salut,
Lien sur MSDN

Le membre est protected, tu peux donc y accéder en dérivant de UserControl (ou meme Control) et en faisant un base.SetStyle(....)

<hr size="2" />-Blog-
0
cs_rodcobalt22 Messages postés 193 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 février 2016
14 déc. 2006 à 15:24
Merci, effectivement c'est tout bête lol.
Mais je suis bloqué par autre chose.

RodCobalt22, vous salue bien ;-)
0
Rejoignez-nous