怎样把整个窗体都保存下来? 希望你有了代码后能给我一份,[email protected],会十分感谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 this.Focus(); SendKeys.Send("%{PRTSC}"); IDataObject ido=Clipboard.GetDataObject(); if(ido!=null) { Image img=(Image)ido.GetData(DataFormats.Bitmap); img.Save(@"f:\1.bmp",System.Drawing.Imaging.ImageFormat.Bmp); } this.Focus(); SendKeys.Send("%{PRTSC}"); IDataObject ido=Clipboard.GetDataObject(); try { Image img=(Image)ido.GetData(DataFormats.Bitmap); img.Save(@"f:\1.bmp",System.Drawing.Imaging.ImageFormat.Bmp); } catch(System.Exception e1) { MessageBox.Show("剪贴板无数据!"); } 有一个网友的一段代码:参照一个拷贝屏幕的代码,加入鼠标的拷贝,放置与一个DLL文件内public Stream GetImageWithCursor(){ //创建一个以当前屏幕为模板的图象 IntPtr dcScreen = CreateDC("DISPLAY",null,null,IntPtr.Zero); Graphics g1 = Graphics.FromHdc(dcScreen); //创建以屏幕大小为标准的位图 Rectangle rect = new Rectangle(); rect = Screen.PrimaryScreen.Bounds; Image MyImage = new Bitmap ( rect.Width , rect.Height , g1 ) ; Graphics g2 = Graphics.FromImage ( MyImage ) ; //得到屏幕的DC IntPtr dc1 = g1.GetHdc(); //得到Bitmap的DC IntPtr dc2 = g2.GetHdc ( ) ; //调用此API函数,实现屏幕捕获 BitBlt( dc2 , 0 , 0 , rect.Width , rect.Height , dc1 , 0 , 0 , 13369376 ) ; //释放掉屏幕的DC g1.ReleaseHdc ( dc1 ) ; //释放掉Bitmap的DC g2.ReleaseHdc ( dc2 ) ; //绘制鼠标 Cursor cur = new Cursor(GetCursor());<----------调用Win32函数获取鼠标 Rectangle rectCursor = new Rectangle (Cursor.Position.X,Cursor.Position.Y, cur.Size.Width,cur.Size.Height); cur.Draw(g2,rectCursor); // <----- 将鼠标图象贴入拷屏图象中 // Stream s=new System.IO.MemoryStream(); //以JPG文件格式来保存 MyImage.Save(s,ImageFormat.Jpeg); MyImage.Dispose(); return s;} 用我的程序可以实现抓屏幕功能。要抓全屏幕用下面的语句。SendKeys.Send("{PRTSC}");大部分情况下都可以实现抓屏幕,实在不行,用 hbxtlhx(下着春雨的天) 提供的API函数也可以实现。 先定义一个object,你把整个窗体作为一个 object 保存起来,我没试过,你试试看啊,行的话告诉我 c#新人求解惑 xml中InsertBefore失败 安装Team Foundation Server客户端失败原因求解 如何判断一个变量是什么类型? 前台textarea组的保存问题? c#中的事件event 如果不取消订阅(-=) 会有什么坏处? c#windowFrom登入要求! C# 怎么使用Tracert命令 我写的一个区域截图功能,怎么截取的图片严重失真?? [请问] 使用命名空间System.Data.OracleClient如何用C#写连接Oracle9i的连接字符串啊? 自动对应粘贴用户/密码 请教:listbox的空格问题??
SendKeys.Send("%{PRTSC}");
IDataObject ido=Clipboard.GetDataObject();
if(ido!=null)
{
Image img=(Image)ido.GetData(DataFormats.Bitmap);
img.Save(@"f:\1.bmp",System.Drawing.Imaging.ImageFormat.Bmp);
}
SendKeys.Send("%{PRTSC}");
IDataObject ido=Clipboard.GetDataObject();
try
{
Image img=(Image)ido.GetData(DataFormats.Bitmap);
img.Save(@"f:\1.bmp",System.Drawing.Imaging.ImageFormat.Bmp);
}
catch(System.Exception e1)
{
MessageBox.Show("剪贴板无数据!");
}
public Stream GetImageWithCursor()
{
//创建一个以当前屏幕为模板的图象
IntPtr dcScreen = CreateDC("DISPLAY",null,null,IntPtr.Zero);
Graphics g1 = Graphics.FromHdc(dcScreen);
//创建以屏幕大小为标准的位图
Rectangle rect = new Rectangle();
rect = Screen.PrimaryScreen.Bounds;
Image MyImage = new Bitmap ( rect.Width , rect.Height , g1 ) ;
Graphics g2 = Graphics.FromImage ( MyImage ) ;
//得到屏幕的DC
IntPtr dc1 = g1.GetHdc();
//得到Bitmap的DC
IntPtr dc2 = g2.GetHdc ( ) ;
//调用此API函数,实现屏幕捕获
BitBlt( dc2 , 0 , 0 , rect.Width , rect.Height , dc1 , 0 , 0 ,
13369376 ) ;
//释放掉屏幕的DC
g1.ReleaseHdc ( dc1 ) ;
//释放掉Bitmap的DC
g2.ReleaseHdc ( dc2 ) ;
//绘制鼠标
Cursor cur = new Cursor(GetCursor());<----------调用Win32函数获取鼠标
Rectangle rectCursor = new Rectangle
(Cursor.Position.X,Cursor.Position.Y,
cur.Size.Width,cur.Size.Height);
cur.Draw(g2,rectCursor); // <----- 将鼠标图象贴入拷屏图象中
//
Stream s=new System.IO.MemoryStream();
//以JPG文件格式来保存
MyImage.Save(s,ImageFormat.Jpeg);
MyImage.Dispose();
return s;
}
SendKeys.Send("{PRTSC}");大部分情况下都可以实现抓屏幕,
实在不行,
用 hbxtlhx(下着春雨的天) 提供的API函数也可以实现。