现在的位置: 首页 > 综合 > 正文

c#利用windowsapi捕捉屏幕图片

2013年10月04日 ⁄ 综合 ⁄ 共 981字 ⁄ 字号 评论关闭

添加引用 

using System.Data;
using System.Drawing.Imaging;

调用API并保存图片

  [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]

  private static extern bool BitBlt(

   IntPtr hdcDest, //目的DC的句柄

   int nXDest, //目的图形的左上角的x坐标

   int nYDest, //目的图形的左上角的y坐标

   int nWidth, //目的图形的矩形宽度

   int nHeight, //目的图形的矩形高度

   IntPtr hdcSrc, //源DC的句柄

   int nXSrc, //源图形的左上角的x坐标

   int nYSrc, //源图形的左上角的x坐标

   System.Int32 dwRop //光栅操作代码

   );

  private void button1_Click(object sender, System.EventArgs e)
  {
  
   Graphics g1 = this.CreateGraphics();//获得窗体图形对象

   Image MyImage = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height, g1);

   Graphics g2 = Graphics.FromImage(MyImage);//创建位图图形对象

   IntPtr dc1 = g1.GetHdc();//获得窗体的上下文设备

   IntPtr dc2 = g2.GetHdc();//获得位图文件的上下文设备

   BitBlt(dc2, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height, dc1, 0, 0, 13369376);//写入到位图

   g1.ReleaseHdc(dc1);//释放窗体的上下文设备

   g2.ReleaseHdc(dc2);//释放位图文件的上下文设备

   MyImage.Save(@"c:/Captured.jpg", ImageFormat.Jpeg);//保存为jpeg文件

   MessageBox.Show("保存图片结束!");

  }

抱歉!评论已关闭.