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 ?
Réponse
Trop de publicités?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.