Résolution du contrôle de la commande utilisateur Fluckier pendant la navigation
Les applications avec une navigation fréquente de contrôle des utilisateurs éprouvent souvent un scintillement lors des mises à jour de contrôle. Bien que la double tampon soit une approche commune, il n'est pas toujours suffisant pour résoudre complètement ce problème.
La cause profonde de ce scintillement réside dans le processus de peinture du contrôle de l'utilisateur. Le contrôle peint son arrière-plan, laissant les lacunes où se trouvent les contrôles des enfants. Chaque contrôle des enfants peint ensuite son contenu, en remplissant ces lacunes. La brève visibilité de ces lacunes (souvent blanches ou noires) crée l'effet vacillant.
Ce problème est inhérent à la dépendance de l'architecture Windows Forms sur les fenêtres individuelles pour les contrôles des enfants. La solution la plus efficace consiste à permettre une double tamponner pour l'ensemble du formulaire, y compris ses contrôles d'enfants. Ceci est réalisé en définissant la propriété CreateParams
du formulaire pour inclure le Flag. WS_EX_COMPOSITED
D'autres améliorations de performances pour minimiser le scintillement peuvent être apportées par:
OnResize()
de l'UC, en utilisant le format Format32bppPArgb
pixel pour un rendu plus rapide. WS_CLIPCHILDREN
pour le contrôle de l'utilisateur l'empêche de peindre sous les contrôles des enfants. Cela permet aux commandes d'enfants de peindre directement sur le fond, en dissimulant les lacunes vacillantes. Label
et PictureBox
, en dessinant directement leur contenu dans l'événement UC OnPaint()
. Cela simplifie souvent considérablement le code. En mettant en œuvre ces stratégies, vous pouvez considérablement réduire ou éliminer les scintillements de contrôle des utilisateurs, ce qui entraîne une interface utilisateur plus lisse et plus réactive.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!