La Double mise en tampon avec le Panneau d'
Double mise en mémoire tampon de l'ensemble de la forme peut être fait par la mise en valeur de la "AllPaintingInWmPaint", "UserPaint" et "DoubleBuffer" ControlStyles à "true" (this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true)
).
Mais cela ne peut pas arriver avec un Système.De Windows.Les formulaires.Panneau parce que la classe ne m'autorise pas à le faire. J'ai trouvé une solution: http://bytes.com/topic/c-sharp/answers/267635-double-buffering-panel-control . J'ai aussi essayé ceci: Winforms Double Mise En Mémoire Tampon . C'est de lag, même lorsqu'il est utilisé sur un petit dessin, j'ai quelques ressources personnalisées, que je suis en utilisant le formulaire et d'autres choses, à cause de qui je ne vais pas tourner l'ensemble forme un dessin. Et le second semble causer des problèmes. Il existe d'autres moyens de le faire?
Je vous pose cette question parce que je ne veux pas le dessin sur le panneau de flash tout le temps quand la fenêtre est redimensionnée. Si il y a un moyen de se débarrasser de l'clignote sans double mise en mémoire tampon, je serai heureux de le savoir.
C'est un jeu qui est joué dans une WinForms fenêtre. Le dessin est tracé sur un panneau. Le dessin est en cours de modification lorsque l'utilisateur clique sur le panneau. Mais quand il y a le défilement et le redimensionnement des processus, il est vacillante.
Vous pouvez trouver une solution ici, il a travaillé pour moi. [Solution][1] [1]: stackoverflow.com/questions/16882921/...
OriginalL'auteur AlexSavAlexandrov | 2011-09-27
Vous devez vous connecter pour publier un commentaire.
Utiliser un PictureBox si vous n'avez pas besoin de prise en charge du défilement, c'est à double tampon par défaut. L'obtention d'un double tampon de défilement du panneau est assez facile:
La ResizeRedraw affectation supprime une peinture à l'optimisation pour les contrôles conteneur. Vous en aurez besoin si vous faites de la peinture dans le panneau. Sans elle, la peinture frottis lorsque vous redimensionnez le panneau.
Double-buffering fait rend la peinture plus lent. Ce qui peut avoir un effet sur les contrôles qui sont tirées à plus tard. Le trou qu'ils quittent avant d'être rempli peut être visible pendant un certain temps, aussi perçue comme un scintillement. Vous trouverez des contre-mesures à l'encontre de l'effet dans cette réponse.
Hans, comment voulez-vous échanger les vieux panneau avec cette nouvelle? J'ai écrit cette classe, maintenant comment puis-je me connecter à mon
panel1
de sorte qu'il devient ladite attributs?Supprimer panel1 de votre formulaire et déposez celui-ci dans sa place. Vous pouvez le renommer en "panel1" pour garder le code existant de travail.
J'ai essayé et j'obtiens les erreurs d'ambiguïté entre le "panel1'"s
OriginalL'auteur Hans Passant
Si elle est acceptable, vous pouvez arrêter l'actualisation du panneau lors du redimensionnement et de permettre à nouveau après la, de cette façon vous vous débarrasser de la laide de scintillement.
OriginalL'auteur StefanE
Je devrais avoir posté ma solution il y a longtemps...
Eh bien, voici ma solution:
Me fait me sentir comme un idiot pour trouver cette solution ans après avoir posé cette question.
J'ai essayé avec un Panneau, mais il s'est avéré être plus lent lors de l'application de la nouvelle image. Quelque part j'avais lu, qu'il est préférable d'utiliser le Panneau au lieu de PictureBox. Je ne sais pas si je dois ajouter quelque chose pour le code pour accélérer les choses pour le groupe.
OriginalL'auteur AlexSavAlexandrov