2009-04-10 5 views
0

Il y a une minuterie sur la forme et dans son cas Cocher j'ai:Comment à tracer un cercle sur un fond changeant

 this.BackColor = ColorTranslator.FromHtml("#" + ColorCodesBack[_index]); 

     CurrentColor = ColorTranslator.FromHtml("#" + ColorCodesFore[_index]); 
     SolidBrush sb = new SolidBrush(CurrentColor); 

     g.FillEllipse(sb, this.Width/2 -200, this.Height/2 - 200, 200, 200); 
     g.DrawImage(b, 150, 150); 

Le problème est juste des changements de fond sur chaque tick et je ne voir un cercle sur le formulaire.

Répondre

2

Ce que vous devez faire est de mettre votre code dans l'événement Paint. Cela entraînera votre code à redessiner chaque fois que le formulaire doit repeindre. Comme si vous passiez votre souris sur le formulaire ou si vous déplaciez le formulaire. Aussi, où déclarez-vous votre objet graphique? Parce que la seule façon dont il sera tiré au sort sur votre formulaire est si vous faites:

Graphics g = this.CreateGraphics(); 

Si vous utilisez l'événement de peinture vous même pas besoin d'un objet de la minuterie.

+0

Merci, j'ai déjà pensé, et vous avez raison, je devrais mettre ce code dans l'événement Paint. – Saber

0

Vous devez combiner ce code avec le même événement tick qui modifie le fond. Sinon, vous avez effectivement une condition de concurrence sur laquelle le "tick" sera tiré en premier. Les combiner permettra de résoudre ce problème.

+0

Ils sont déjà dans la même case. La première ligne change l'arrière-plan. – Saber

0

La suggestion de mettre à jour l'arrière-plan et le premier plan en même temps est solide.

Si vous ne pouvez pas contrôler cela, vous pourriez peut-être ajouter un contrôle transparent à votre fenêtre sur le dessus de l'arrière-plan et dessiner sur le contrôle transparent? De cette façon, vous serez toujours au-dessus dans l'ordre Z. Cela réduirait également votre besoin de redessiner régulièrement.

+0

Eh bien, j'ai essayé de dessiner le cercle sur un panneau. Mais cela n'a pas fonctionné .. Vous avez un échantillon de code pour dessiner un cercle sur un contrôle transparent? – Saber

Questions connexes