System.Runtime.InteropServices.ExternalException: GDI+ 中发生一般性错误
at System.Drawing.Image.FromHbitmap(IntPtr hbitmap, IntPtr hpalette)
at System.Drawing.Image.FromHbitmap(IntPtr hbitmap)
at ContextSave.ScreenShot.GetPartScreen(Point P1, Point P2, Boolean Full) in c:\ccontextsave9\contextsave\screenshot.cs:line 62
at ContextSave.Form1.SaveGroupToDB(Boolean confirm) in c:\ccontextsave9\contextsave\form1.cs:line 301
at ContextSave.Form1.timer_Tick(Object sender, EventArgs e) in c:\ccontextsave9\contextsave\form1.cs:line 835
at System.Windows.Forms.Timer.OnTick(EventArgs e)
at System.Windows.Forms.Timer.Callback(IntPtr hWnd, Int32 msg, IntPtr idEvent, IntPtr dwTime)是winform程序,不存在权限问题
程序是5秒钟截屏一次,有的时候可以,时间长了就报错。程序代码如下
Bitmap bmap = ScreenShot.GetPartScreen(new Point(0),new Point(0),true);
bmap.Save(groupName+".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
bmap.Dispose();我尝试过改为
MemoryStream ms=new MemoryStream();
bmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
System.IO.BinaryWriter bw=new BinaryWriter(ms);
FileStream fs=File.OpenWrite(groupName+".jpg");
for(int i=0;i<ms.ToArray().Length;i++)
fs.WriteByte(ms.ToArray()[i]);
fs.Flush();
fs.Close();但是ms array的长度是以万计的,速度太慢,所以不行。
有更好的方法吗
at System.Drawing.Image.FromHbitmap(IntPtr hbitmap, IntPtr hpalette)
at System.Drawing.Image.FromHbitmap(IntPtr hbitmap)
at ContextSave.ScreenShot.GetPartScreen(Point P1, Point P2, Boolean Full) in c:\ccontextsave9\contextsave\screenshot.cs:line 62
at ContextSave.Form1.SaveGroupToDB(Boolean confirm) in c:\ccontextsave9\contextsave\form1.cs:line 301
at ContextSave.Form1.timer_Tick(Object sender, EventArgs e) in c:\ccontextsave9\contextsave\form1.cs:line 835
at System.Windows.Forms.Timer.OnTick(EventArgs e)
at System.Windows.Forms.Timer.Callback(IntPtr hWnd, Int32 msg, IntPtr idEvent, IntPtr dwTime)是winform程序,不存在权限问题
程序是5秒钟截屏一次,有的时候可以,时间长了就报错。程序代码如下
Bitmap bmap = ScreenShot.GetPartScreen(new Point(0),new Point(0),true);
bmap.Save(groupName+".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
bmap.Dispose();我尝试过改为
MemoryStream ms=new MemoryStream();
bmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
System.IO.BinaryWriter bw=new BinaryWriter(ms);
FileStream fs=File.OpenWrite(groupName+".jpg");
for(int i=0;i<ms.ToArray().Length;i++)
fs.WriteByte(ms.ToArray()[i]);
fs.Flush();
fs.Close();但是ms array的长度是以万计的,速度太慢,所以不行。
有更好的方法吗
解决方案 »
- ORA-00933: SQL 命令未正确结束
- wpf treeview checkbox选中问题
- c# 打包数据库文件 是不是一定要安装sql server
- c#对文档的操作
- ASP。net 继承验证的问题
- 象datetimepicker控件一样效果的用户控件是如何做出来的,给高分啦
- ★★急!请问如何在dataGrid里点击某一行,这条纪录就排到本dataGrid的第一个了?
- 我打算做一个打包工具,谁能给你思路。或着说一下用代码怎么实现压缩解压(不借用rar等压缩工具,)
- C#窗体最小化后取在浏览器上按ctrl+c的值
- C#,引用传递问题~较为复杂,寻求好的解决办法~!
- 哪位帮忙解决一下:查询access数据库时出错
- IOC里类的构造函数该如何设计
//Monitor.Pulse(this);
//Monitor.Exit(this);
private void timer_Tick(object sender, System.EventArgs e)
{
this.timer.Enabled=false;
lock(this)
{
this.SaveGroupToDB(false);
}
this.timer.Enabled=true;
}改为
private void timer_Tick(object sender, System.EventArgs e)
{
System.Threading.Monitor.Enter(this); this.SaveGroupToDB(false); System.Threading.Monitor.Exit(this);
}还是出错......
而且它是临时变量