2011-02-18 2 views
1

J'ai un contrôle personnalisé qui hérite de Panel. Je finis par mettre plusieurs DataGrids et étiquettes sur ce panneau. Quand il devient trop long, il défile automatiquement pour moi.Double Buffer un contrôle personnalisé dans le Compact Framework

J'ai vraiment besoin du défilement parce que c'est une liste d'objets scannés qui vont grossir au-delà de ce que l'espace de l'écran permet. Mais quand je défile, ça scintille pas mal. J'aimerais qu'il me donne un défilement lisse.

J'ai vu plusieurs exemples de double buffer "Compact Framework", mais ils sont tous des méthodes de double buffering draw (ie graphics.DrawString). Mon contrôle personnalisé ne fait pas de peinture par lui-même. Il met juste des grilles et des étiquettes normales sur le panneau et laisse le panneau les peindre.

Existe-t-il un moyen de doubler les contrôles normaux (encore une fois PAS de peinture personnalisée)?

+0

Si vous ne trouvez pas de réponse à cette question, il existe peut-être un moyen de retarder les mises à jour jusqu'à ce que le contrôle ait fini de bouger/défiler, si cela peut vous aider. –

Répondre

1

Les contrôles Compact Framework ne possèdent pas la propriété DoubleBuffered ou le mécanisme de double tampon sous-jacent. Il n'y a aucun moyen de l'ajouter non plus. La seule façon d'obtenir un double tampon est de remplacer la peinture du contrôle et de faire les vôtres.

+0

Merci pour le pointeur. J'ai essayé de BitBlt le panneau et les contrôles sur le panneau dans leurs méthodes OnPaint, mais cela n'a pas amélioré la distorsion du défilement (il ne scintille pas vraiment) C'est vraiment la peinture des partiels des contrôles et des peintures trop lentes et trapues). Je n'ai pas eu à faire grand-chose avec BitBlt depuis mes jours C++ (il y a des années et des années). Donc j'ai peut-être mal fait. Si vous avez un exemple de code qui pourrait aider à la double mise en mémoire tampon, ce serait génial. – Vaccano

Questions connexes