我在第二种形式的图片框中检索视频时遇到问题。 这是我的代码
Main.cs
private void start_video()
{
while (!needClose)
{
video.capture();
pictureBox1.Image = ImageFrame.video;
}
}
private void button1_Click(object sender, EventArgs e)
{
camera = new Camera();
camera.Show();
}
这是我的班级(当然有一个设置视频的功能)
public class ImageFrame
{
public static Image video { get; set; }
}
这是我的Camera.cs
public partial class Camera : Form
{
private bool test = false;
public Camera()
{
InitializeComponent();
returnVideo();
}
private void returnVideo()
{
while (!test)
{
pictureBox2.Image = ImageFrame.video;
}
}
视频在pictureBox1中运行正常,但是当我点击button1打开新表格检索pictureBox1的同一视频时,它就会冻结。 为什么?如果我不使用而它只会显示一个帧,但我需要视频(来自相机,所以在实时视图中)。
答案 0 :(得分:0)
这会阻止事件循环运行,因此在每个窗口更改UI更新都将停止并因此冻结。
while (!test) // = while(true)
{
pictureBox2.Image = ImageFrame.video;
}
使用计时器每50毫秒或更短时间更新图片。
编辑:一些伪代码:
timer1.Interval=50;
timer1.Tick+=timer1_Tick;
timer1.Start();
void timer1_Tick(..)
{
pictureBox2.Image = ImageFrame.video;
}
这也减少了CPU负载。