2014-08-31 1 views
0

그리기 : 나는 진행 선에게 매 초마다 새로 고침을 시도하지만,있어C 번호 양식, 나는 다음과 같은 코드를 가지고 진행 선

public async void startCountdown() 
{ 
    do 
    {    
     label9.Text = frsL.ToString(); 

     frsL -= frsLStep; 

     g = tabPage1.CreateGraphics(); 
     g.DrawLine(pen1, 5, 7, (int)frsL + 5, 7); 

     await Task.Delay(1000); 

    } while (timeToSeconds()); 
} 

라인이 변경되지 않습니다. 나는 label9를 사용하여 frsL 값이 변경되고 있는지를 확인했지만 라인은 다시 그려지지 않으며 시작 길이에 머물러 있습니다.

+0

'timeToSeconds()'의 기능은 무엇입니까? 그것을위한 코드를 추가 할 수 있습니까? – LightBulb

+0

또한 루프의 모든 단계에서 그래픽 컨텍스트를 다시 작성하기 때문에 문제의 원인이 될 수있는 루프 내에서'g = tabPage1.CreateGraphics(); '를 수행하고 있습니다. 그 부분은 루프 외부에 있어야합니다. – LightBulb

+0

timeToSeconds()는 프로그램이 실행되는 동안 true를 반환하고 완료되면 false를 반환합니다. – user2765257

답변

0

그래, 문제는 줄이 줄고 새로운 줄을 그리기 전에 이전 줄을 제거해야한다는 것이 었습니다. 'g.Clear (Color.White); 삽입'; 'g.DrawLine'이 문제를 해결하기 전에. 나쁜 점은 때로는 전체 선이 깜박이는 것입니다.

+0

지우기 대신 나머지 부분에 대해서만 두 번째 줄을 페인트하면됩니다. 또한 더블 버퍼링을 설정하십시오! 또한 Yorye Nathan의 추천을 고려하십시오! – TaW

관련 문제