C# 将图片框中的图像保存到特定目录

C# 将图片框中的图像保存到特定目录,c#,winforms,aforge,C#,Winforms,Aforge,我正在尝试使用forge.NET将网络摄像头图像保存到目录中 这是我的密码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } FilterInfoCollection webcam; VideoCaptureDevice cam; Bitmap bitmap; private void Form1_Load(obj

我正在尝试使用forge.NET将网络摄像头图像保存到目录中

这是我的密码:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    FilterInfoCollection webcam;
    VideoCaptureDevice cam;
    Bitmap bitmap;

    private void Form1_Load(object sender, EventArgs e)
    {    
        webcam = new FilterInfoCollection(FilterCategory.VideoInputDevice);
        cam = new VideoCaptureDevice(webcam[0].MonikerString);
        cam.NewFrame += new NewFrameEventHandler(cam_NewFrame);
        cam.Start();   
    }

    void cam_NewFrame(object sender, NewFrameEventArgs eventArgs)
    {
        bitmap = (Bitmap)eventArgs.Frame.Clone();
        pictureBox1.Image = bitmap;
        pictureBox1.Image.Save("c:\\image\\image1.jpg");
    }
但我有一个例外:

未处理InvalidOperationException
对象当前正在其他地方使用。
如果在GetHdc方法之后使用图形对象,请调用RealseHdc方法。

提前感谢。

问题是这一行:

pictureBox1.Image = bitmap;
pictureBox1.Image.Save("c:\\image\\image1.jpg");
您正在尝试保存尚未正确加载的图像,并且您还面临交叉线程问题

这种情况下的解决方案是在绘图时不使用多个螺纹

void cam_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
    bitmap = (Bitmap)eventArgs.Frame.Clone();
    pictureBox1.Image = bitmap;

         try
         {
             this.Invoke((MethodInvoker)delegate
             {
                 //saves image on its thread

                 pictureBox1.Image.Save("c:\\image\\image1.jpg");

             });
         }
         catch (Exception ex)
         {
             MessageBox.Show(""+ex);
         }
 }
看看这个