2010-02-06 8 views
0

J'utilise quelques images dans mon 'MainForm' et mon application Windows a été écrit par c sharp. J'utilise ce formulaire pour démarrer d'autres formulaires dans mon projet.performance en C# Application

Et j'utilise une étiquette et un panneau avec la couleur transparente. mais quand le programme a commencé, je vois beaucoup de clignotements dans l'étiquette transparente et le panneau. Et c'est très mauvais.

Comment puis-je résoudre ce problème? L'avez-vous testé sur plusieurs machines?

+0

Utilisez-vous WPF ou WinForms? – Kazar

+0

J'utilise l'application winform –

+0

La définition de la propriété 'DoubleBuffered' sur votre' Form' a-t-elle un effet positif sur les performances de rendu? – stakx

Répondre

2

Activation DoubleBuffered comme Stax suggéré ci-dessus est utile, mais il peut ne pas être suffisant.

Dans votre formulaire, ajoutez le remplacement de la méthode suivante:

protected override void OnPaintBackground(PaintEventArgs e) {} 

Et, dans la méthode OnPaint, peinture l'arrière-plan vous-même à la place. Si vous ne le faites pas, dessiner l'arrière-plan et la peinture sont des événements distincts, et la peinture de fond a une priorité plus élevée, ce qui signifie que cela se produira plus tôt. En outre, si vous ajoutez des contrôles enfants (comme des étiquettes), ils reçoivent leurs propres événements de peinture/arrière-plan de peinture. Vous pourrez peut-être désactiver l'arrière-plan de l'étiquette. Si je fais ce genre de choses, j'ai tendance à ne pas utiliser de contrôles mais à peindre le texte et les images dans un seul OnPaint.

+0

s'il vous plaît écrire un échantillon sur les OnPaintBackground Et OnPaint –

+0

Je ne peux pas travailler avec OnPaintBackground Et OnPaint S'il vous plaît aidez-moi merci –

+0

Toujours prêt à aider, mais je pense qu'il est préférable si vous postez un exemple d'application C# qui illustre le problème. Ajoutez simplement les contrôles et définissez les propriétés comme vous le faites dans votre code de production. Et, dites-nous si vous utilisez Win7/Vista ou XP. –

0

Avez-vous utilisé un ordinateur mis à jour avec tous les Service Packs .net nécessaires.?

etc

+0

oui je tester dans plusieurs machines .. –