屏幕捕捉示例代码

using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using System.Drawing.Imaging ;
public class Form1 : Form
{
 private Button button1 ;
 private System.ComponentModel.Container components = null ;
   
 public Form1 ( )
 {
  //初始化窗体中的各个组件
  InitializeComponent ( ) ;
 }
 // 清除程序中使用过的资源
 protected override void Dispose ( bool disposing )
 {
  if ( disposing )
  {
   if ( components != null )
   {
    components.Dispose ( ) ;
   }
  }
  base.Dispose ( disposing ) ;
 }
 private void InitializeComponent ( )
 {
  button1 = new Button ( );
  SuspendLayout ( ) ;
  button1.Location = new System.Drawing.Point ( 64 , 40 ) ;
  button1.Name = "button1" ;
  button1.Size = new System.Drawing.Size ( 80 , 32 ) ;
  button1.TabIndex = 0 ;
  button1.Text = "捕获" ;
  button1.Click += new System.EventHandler ( button1_Click ) ;
       
  AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;
  ClientSize = new System.Drawing.Size ( 216 , 125 ) ;
  Controls.Add  ( button1 ) ;
  MaximizeBox = false ;
  MinimizeBox = false ;
  Name = "Form1" ;
  Text = "C#捕获当前屏幕!" ;
  ResumeLayout ( false ) ;
       
 }
 //声明一个API函数
 [ System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll" ) ]
 private static extern bool BitBlt (
  IntPtr hdcDest , // 目标 DC的句柄
  int nXDest ,
  int nYDest ,
  int nWidth ,
  int nHeight ,
  IntPtr hdcSrc ,  // 源DC的句柄
  int nXSrc ,
  int nYSrc ,
  System.Int32 dwRop  // 光栅的处理数值
  ) ;
   
 static void Main ( )
 {
  Application.Run ( new Form1 ( ) ) ;
 }
 private void button1_Click ( object sender , System.EventArgs e )
 {
  //获得当前窗口的大小
  Rectangle rect = new Rectangle () ;
  rect.Size = this.ClientSize;//this.button1.Size;
  //创建一个以当前窗口为模板的图象
  Graphics g1 =this.CreateGraphics ( ) ;//button1.CreateGraphics();
  //创建以窗口大小为标准的位图
  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 ) ;
  //以JPG文件格式来保存
  MyImage.Save ( @"Capture.jpg" , ImageFormat.Jpeg );
  MessageBox.Show ( "当前屏幕已经保存为capture.jpg文件!" ) ;
 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值