我正在制作自定义网络摄像头用户控件。
我使用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);
答案 0 :(得分:1)
问题在于写入文件。 c:\驱动器中可能没有足够的空间,或者您没有写入c:\ drive(文件夹外)的权限。 尝试写入 AppData ,如果要写入c:\ drive,则需要使用自定义清单获取管理权限。