来自网络摄像头预览的图像会抛出通用的GDI +异常

时间:2012-06-23 08:19:46

标签: c# image expression-encoder expression-encoder-sdk microsoft-expression

我正在制作自定义网络摄像头用户控件。

我使用Microsoft Expression Encoder,并在控件内的面板上设置PreviewWindow。

一切都很好,除了当我试图抓住图像时,我得到一个例外:

  

通用GDI +例外

我的第一次尝试是:

using (var bmp = new Bitmap(p.Width, p.Width))
            {
                panel1.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
                bmp.Save(@"c:\test.png");
            }

另一个人:

using (Bitmap bitmap = new Bitmap(panelVideoPreview.Width, panelVideoPreview.Height))
          { 
              using (Graphics g = Graphics.FromImage(bitmap))
              {
                  Rectangle rectanglePanelVideoPreview = panelVideoPreview.Bounds;

             Point sourcePoints = panelVideoPreview.PointToScreen(new Point(panelVideoPreview.ClientRectangle.X, panelVideoPreview.ClientRectangle.Y));
             g.CopyFromScreen(sourcePoints, Point.Empty, rectanglePanelVideoPreview.Size); 
              }

              string strGrabFileName = String.Format("C:\\Snapshot.jpg", DateTime.Now);
              bitmap.Save(strGrabFileName, ImageFormat.Jpeg);        

1 个答案:

答案 0 :(得分:1)

问题在于写入文件。 c:\驱动器中可能没有足够的空间,或者您没有写入c:\ drive(文件夹外)的权限。 尝试写入 AppData ,如果要写入c:\ drive,则需要使用自定义清单获取管理权限。