5 votes

Double tampon des contrôles enfants dans un contrôle personnalisé (C#)

Je veux mettre en double tampon un contrôle personnalisé qui contient des boutons. J'ai essayé plusieurs méthodes de mise en double tampon du contrôle : SetStyle, BufferedGraphicsContext et dessin sur un bitmap. Toutes ces méthodes fonctionnent bien pour le dessin personnalisé du contrôle, mais aucune d'entre elles ne permet de dessiner le bouton dans un tampon arrière. Comment puis-je y parvenir ?

2voto

John Rudy Points 16436

Techniquement, vous ne pouvez pas, et vous ne devriez vraiment pas avoir besoin de le faire s'il s'agit de boutons WinForms .NET standard.

Les boutons eux-mêmes contrôlent cela par le biais de la propriété protégée DoubleBuffered. La seule façon d'y accéder serait de dériver une nouvelle classe de S.W.F.Button, et d'implémenter un code pour activer la propriété DoubleBuffered sur les instances de cette classe (je le ferais probablement dans le constructeur). Enfin, utilisez des objets de cette nouvelle classe sur votre formulaire au lieu de S.W.F.Buttons.

Cependant, si je me souviens bien, les boutons sont purement dessinés à partir de WinAPI ; ils ne sont pas GDI+. Par conséquent, vous ne devriez pas besoin de pour doubler la mise en mémoire tampon de leur dessin. Cela dit, je ne connais pas votre scénario d'utilisation et je ne sais pas quels symptômes votre application affiche, donc je peux me tromper :)

Vous pourriez envisager de consulter le livre Pro .NET 2.0 Windows Forms et contrôles personnalisés en C# . Tout ceci a été résumé à partir des informations contenues dans ce livre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X