2014-02-19 15 views
0

I는 임의의 픽셀을 이용하여 비트 맵 이미지 을 생성하는 코드를 작성하고있다. 나는 무비 클립 등의 디스플레이에 서로 후이 무작위로 생성 된 이미지를 재생합니다.
기본적으로 매번 내 기능을 생각하고 새 이미지를 생성 한 다음 내 이미지 상자에 표시하고이 과정을 반복하는 루프가 필요합니다. 무한한 시간.임의 함수를 사용하여 무작위 이미지를 생성하려면 어떻게해야합니까?

While (true) 
{ 
    foreach (Point p in blackPixels) 
    { 
     if (r.NextDouble() < 0.20) 
     { 
      bmp.SetPixel(p.X, p.Y, Color.Black); 
     } 
     else 
     { 
      bmp.SetPixel(p.X, p.Y, Color.White); 
     } 
    } 

    pictureBox1.Image = bmp; 
} 

내 문제는 내가는 "동안 (사실이)"하지만 프로그램을 추락에 전체 코드를 넣어 가지고 있습니다!
사람은 나에게 모든 프레임에 대해 잘 작동 코드로 연주하는 올바른 방법을 말할 수 및 연속적인 모든 프레임을 표시 할 수 있습니까?

+0

당신은 "프로그램을 충돌"이란 무엇을 의미합니까? 응용 프로그램을 종료시키는 예외가 있었습니까? 방금 * 얼려 * 입력을 허용하지 않은 경우 코드를 검토하고 루프가 실행되는 동안 루프의 어느 부분에서 입력이 처리 될 것으로 예상되는지 알려주십시오. –

+0

엡, 기본적으로 아무것도 표시되지 않습니다 그냥 그래서 – CowBoy

+0

을 작동이 중지 - 동안 '동안 (사실)'루프는 어디 코드의 당신이 기대 (무엇 라인 (들)), 실행하는 모든 사용자 입력을 처리 할 수있는 응용 프로그램 ? –

답변

0

당신은 대신 다음과 같이 뭔가를 시도 할 수 :

DispatcherTimer timer = new DispatcherTimer(); 
timer.Interval = new TimeSpan(0, 0, 16); 
timer.Tick += delegate 
{ 
    timer.Stop(); 
    // your foreach code here 
    foreach (Point p in blackPixels) 
     ... 
    timer.Start(); 
}; 
timer.Start(); 

는 그것은 GUI 스레드를 차단하지 않고 사진마다 16초을 업데이트해야합니다. 정확성을 위해서

, 양식을 닫기 전에 timer.Stop와 타이머를 중지하는 것이 있는지 확인하십시오.

+0

이 코드는 프로세스를 n 번 반복합니까? – CowBoy

+0

@ user3266873 타이머가 멈출 때까지 16 초 간격으로 코드가 실행됩니다. 'n'번만하고 싶다면 카운터를 추가하고 위임자 내에서 카운터를 늘릴 수 있습니다. 제한을 초과하면 타이머를 다시 시작하지 않습니다. – AlexD

+0

의견을 보내 주셔서 감사합니다. (0, 0, 16) 값이 무엇인지 설명해 주시겠습니까? 그리고 지연없이 프레임을 계속 재생할 수 있습니까? – CowBoy

관련 문제