C#利用Windows自带gdi32.dll实现抓取屏幕功能实例

 更新时间:2014年08月25日 15:55:26   投稿:shichen2014  
这篇文章主要介绍了C#利用Windows自带gdi32.dll实现抓取屏幕功能,是C#程序设计中常见的一个重要技巧,需要的朋友可以参考下

本文实例讲述了C#利用Windows自带gdi32.dll实现抓取屏幕功能,是C#应用程序设计中一个非常实用的功能,现分享给大家供大家参考借鉴。

具体功能代码如下:

internal static void GetScreenShot( )
{
  //获得当前屏幕的大小 
  Rectangle rect = new Rectangle();
  rect = Screen.AllScreens[0].WorkingArea;
   
  //计算图片的大小,因为图片的长和宽有可能超过目前屏幕的大小 
  //创建一个以当前屏幕为模板的图象 
  Control ctl = new Control();
  Graphics g1 = ctl.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文件格式来保存 
  //Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
  //return MyImage.GetThumbnailImage(control.Width, control.Height, myCallback, IntPtr.Zero);
  MyImage.Save("D:\\aa.jpg");
 
}
[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
private static extern bool BitBlt(
 IntPtr hdcDest,  //目标设备的句柄
 int nXDest,    //目标对象的左上角的X坐标
 int nYDest,    //目标对象的左上角的X坐标
 int nWidth,    //目标对象的矩形的宽度
 int nHeight,    //目标对象的矩形的长度
 IntPtr hdcSrc,   //源设备的句柄
 int nXSrc,     //源对象的左上角的X坐标
 int nYSrc,     //源对象的左上角的X坐标
 System.Int32 dwRop //光栅的操作值
);

希望本文C#抓取屏幕实例对大家的C#程序设计有所帮助。

相关文章

  • C#使用post发送和接收数据的方法

    C#使用post发送和接收数据的方法

    这篇文章主要介绍了C#使用post发送和接收数据的方法,涉及C#使用post收发数据的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#实现文件筛选读取并翻译的自动化工具

    C#实现文件筛选读取并翻译的自动化工具

    这篇文章主要为大家详细介绍了如何利用C#实现文件筛选及读取内容,并翻译的自动化工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-03-03
  • C#面向对象设计原则之开闭原则

    C#面向对象设计原则之开闭原则

    这篇文章介绍了C#面向对象设计原则之开闭原则,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • LINQ排序操作符用法

    LINQ排序操作符用法

    这篇文章介绍了LINQ排序操作符的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • C#四舍五入(函数)用法实例

    C#四舍五入(函数)用法实例

    这篇文章主要介绍了C#四舍五入(函数)用法实例,有需要的朋友可以参考一下
    2013-11-11
  • C#登录界面代码详细图文教程

    C#登录界面代码详细图文教程

    我们在使用C#做项目的时候,基本上都需要制作登录界面,下面这篇文章主要给大家介绍了关于C#登录界面代码的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • C#调用WebService实例与开发教程(推荐)

    C#调用WebService实例与开发教程(推荐)

    下面小编就为大家分享一篇C#调用WebService实例与开发教程,具有很好的参考价值,希望对大家有所帮助。一起跟随想过来看看吧
    2017-12-12
  • C# 设置Chart的X轴为时间轴​​​​​​​详情

    C# 设置Chart的X轴为时间轴​​​​​​​详情

    这篇文章主要介绍了C#设置Chart的X轴为时间轴​​​​​​​详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • C# Winform 禁止用户调整ListView的列宽

    C# Winform 禁止用户调整ListView的列宽

    在使用 ListView 的时候, 有时我们不想让别人随意调整列宽, 或者某几列的列宽, 以便达到美观, 或者隐藏数据的作用. 那么可以用一下代码来实现
    2011-05-05
  • 基于C#实现的轻量级多线程队列图文详解

    基于C#实现的轻量级多线程队列图文详解

    这篇文章主要给大家介绍了关于基于C#实现的轻量级多线程队列的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08

最新评论