[C# .Net 2.0] DoubleBuffering sur un Panel

DoubleBuffering sur un Panel [C# .Net 2.0] - C#/.NET managed - Programmation

Marsh Posté le 18-01-2007 à 20:46:44    

Bonjour,
 
Voici mon problème :
Avec GDI+, il est possible d'utiliser le double buffering sur un Form (System.Windows.Forms) de cette manière :
 

Code :
  1. // Constructeur de la fenêtre principale
  2.         public win_Main()
  3.         {
  4.             InitializeComponent();
  5.             // Code permettant d'utiliser le double buffering
  6.             SetStyle(ControlStyles.DoubleBuffer, true);
  7.             SetStyle(ControlStyles.UserPaint, true);
  8.             SetStyle(ControlStyles.AllPaintingInWmPaint, true);
  9.             ...
  10.         }


 
Cela permet d'éviter le scintillement lorsque l'on déplace des formes géométriques par exemple.
 
Voilà tout ça c'est bien beau mais dans mon cas, je dessine directement sur un Panel, et la classe Panel ne possède pas de méthode SetStyle qui permet d'activer le DoubleBuffering...
 
Donc je souhaitais savoir si vous conaissiez un moyen d'utiliser le DoubleBuffering sur un Panel (Autrement qu'en recréant un composant comme Panel hérité de Forms...)
 
Merci d'avance.

Message cité 1 fois
Message édité par Bef@ le 18-01-2007 à 20:47:15
Reply

Marsh Posté le 18-01-2007 à 20:46:44   

Reply

Marsh Posté le 21-01-2007 à 11:52:25    

pourquoi tu ne veux pas hériter de panel?

Reply

Marsh Posté le 21-01-2007 à 14:34:54    

Bef@ a écrit :


Voilà tout ça c'est bien beau mais dans mon cas, je dessine directement sur un Panel, et la classe Panel ne possède pas de méthode SetStyle qui permet d'activer le DoubleBuffering...


bien sur que si, Panel possède une méthode SetStyle (héritée de Control), c'est juste qu'elle est protected, donc inaccessible à partir d'une instance de la classe de base...

 
Bef@ a écrit :


Donc je souhaitais savoir si vous conaissiez un moyen d'utiliser le DoubleBuffering sur un Panel (Autrement qu'en recréant un composant comme Panel hérité de Forms...)


t'as juste qu'à faire dériver ta classe de Panel, ce qui te permettra d'utiliser SetStyle.
sinon tu peux aussi utiliser la réflection pour utiliser SetStyle. la première méthode est la plus propre, sauf que tu ne pourras pas utiliser le Designer de VS pour placer ton controle. tu devras tout faire "à la main"


Message édité par Harkonnen le 21-01-2007 à 14:51:46

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 22-01-2007 à 11:39:00    

Ok je vais essayer ça, merci beaucoup pour ton aide.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed