我正在编写一个使用随机像素生成位图图像的代码。我想在显示器上一个接一个地播放这个随机生成的图像,如影片剪辑。
我基本上需要一个循环,每次都想到我的功能并生成一个新图像,然后将其显示到我的图像框并重复此过程无限时间。
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;
}
我的问题是我已将整个代码放入“While(true)”但它崩溃了程序!
任何人都可以告诉我正确的方法来播放每帧都能正常工作的代码并且可以连续显示每一帧吗?
答案 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();
它应该每16秒更新一次图片而不会阻止GUI线程。
为了准确起见,请确保在关闭表单之前使用timer.Stop
停止计时器。