1

我正在製作一個自定義的攝像頭用戶控件。來自webcam preview的圖片throws generic GDI + exception

我使用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"); 
      } 

另一個waS:

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);   
+0

您是否檢查過c:\驅動器中是否有足夠的空間或正在寫入c:\驅動器是否允許(文件夾外).I在此類情況下遇到類似異常 – techno

+0

@techno我幾乎確定問題是在權限中。我可以寫入我的應用程序數據文件夾。有沒有辦法寫入一個自定義文件夾(不是C:但可能在我的應用程序執行文件夾內),而無需從Windows設置權限? – Cranio

+0

如果它不在c:\ Program Files \ – techno

回答

1

問題在於寫入文件。 c:\ drive中可能沒有足夠的空間,或者您沒有寫入c:\ drive(文件夾外)的權限。 嘗試寫入AppData,如果要寫入c:\ drive,則需要使用自定義清單獲取管理權限。

+0

查看上面的評論:) – Cranio