2009-04-10 2 views
0

:는 방법에 변화 배경에 원을 그립니다 내가했습니다 폼과 틱 이벤트 타이머가 있습니다

 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); 

문제 모든 진드기에 단지 배경 변경하고 난 몰라 양식의 원을보십시오.

답변

2

코드를 양식 Paint 이벤트에두면됩니다. 이렇게하면 폼이 다시 칠해야하는 시간을 코드에서 다시 그릴 수 있습니다. 양식을 마우스로 움직이거나 양식을 움직이는 것과 같습니다. 또한 그래픽 객체를 어디에 선언하고 있습니까?

Graphics g = this.CreateGraphics(); 

페인트 이벤트를 사용하는 경우 타이머 개체가 필요하지 않습니다.

+0

고마워, 나는 이미 알았어. 네가 맞아,이 코드를 Paint 이벤트에 넣어야한다. – Saber

0

이 코드를 배경색을 변경하는 동일한 틱 이벤트와 결합해야합니다. 그렇지 않으면 효과적으로 "진드기"가 해고 될 경합 조건을 갖게됩니다. 그들을 결합하면 그 문제가 해결 될 것입니다.

+0

그들은 이미 동일한 똑딱입니다. 첫 번째 줄은 배경을 바꾸고 있습니다. – Saber

0

배경과 전경을 동시에 업데이트하라는 제안은 확실합니다.

이것을 제어 할 수없는 경우 배경 위에 투명 컨트롤을 추가하고 투명 컨트롤을 그릴 수 있습니까? 그렇게하면 Z- 오더에서 항상 위에있게됩니다. 이렇게하면 정기적으로 다시 그릴 필요가 줄어 듭니다.

+0

글쎄, 나는 패널에 원을 그리려고했다. 하지만 작동하지 않습니다. 투명 컨트롤에 원을 그리는 코드 샘플이 있습니까? – Saber