2010-11-19 41 views
2

J'utilise Visual Studio 2008désactiver la peinture de fond

J'ai un contrôle qui disperse une image traitée. Chaque fois que les paramètres de traitement sont modifiés, je voudrais mettre à jour cette image, mais sans scintillement. Si je pouvais empêcher les fenêtres d'effacer la zone avant de peindre, le scintillement devrait, pour la plupart, disparaître.

Cette question est, comment faire?

Quelque chose comme: this.SetStyle (ControlStyles.AllPaintingInWmPaint, true); Devrait le faire, sauf que cela m'oblige à sous-classer le contrôle TableLayoutPanel (quelque chose que j'ai passé une heure à essayer de faire), et avec ce que j'ai réalisé, cela n'a eu aucun effet.

Existe-t-il un moyen facile de désactiver la peinture de fond de mon contrôle?

+0

Avez-vous défini la propriété DoubleBuffered de votre contrôle sur true? –

Répondre

4

Avez-vous essayé l'événement primordial OnPaintBackground et ne rien faire?

protected override void OnPaintBackground(PaintEventArgs pevent) 
{ 
} 
+0

Cela fonctionne pour moi! – Skizz

+0

Fonctionne. Maintenant, je dois juste comprendre comment sous-classer le contrôle sans visser l'éditeur de formulaires! –

-1

essayez ceci:

this.SuspendLayout(); 
// do update here 
this.ResumeLayout(); 

Précision: this est la forme

+0

Je ne fais que mettre à jour quelle image je veux peindre. Je ne change rien au formulaire, je l'invalide juste pour qu'il soit repeint avec la nouvelle image. Le problème est que l'arrière-plan s'éclaircit avant de peindre, donc ça scintille. –

+0

Je vois. Désolé pour la confusion de ma part. –