WinForm自动化测试工具开发札记(5)使用.NET Framework 2.0 新功能抓屏

简介:
花絮
上火了,眼睛疼ing...滴了眼药...看你还敢疼的!
这两天一直在攻克抓屏这一关.手头有几本书,还有网上的一些例子,都是使用Win32 API的BitBlt函数.大同小异.今天在看.NET Framework 2.0的类库时,偶然发现原来抓屏功能已经集成进.NET Framework 2.0的Graphics类了,是个实例方法.两行代码就搞定!下面我给出代码.排在后面的是使用Win32实现的代码,不过已经用处不大了:p
1.使用.NET Framework 2.0 类库新功能:
//========== 水之真谛 ==========//
//
// =http://blog.csdn.net/FantasiaX //
//
//======
上善若水,润物无声 ====//

using  System;
using System.Text;
//
以下3个 using 是手动添加的,要想使用 System.Drawing ,还要添加 System.Drawing.dll 的引用
using  System.Drawing;
using System.Drawing.Imaging;
using System.Threading;

namespace SuperCamera
{
    class Program
    {
        static void Main(string[] args)
        {
            //
给你5秒钟,摆个 Pose!
            Thread.Sleep(5000);

            //
说:茄 ~~~~~ ~~~~~~
            Bitmap photo = new Bitmap(1024, 768, PixelFormat.Format32bppArgb);
            Graphics graph = Graphics.FromImage(photo);
            graph.CopyFromScreen(0, 0, 0, 0, new Size(1024, 768));
            photo.Save(@"C:\
水之真谛 .jpg" ImageFormat.Jpeg);

            Console.WriteLine(@"OK,
C:\ 盘下面取照片吧!不过,唔 ~~~ 不是你的哦! " );
            Console.ReadLine();
        }
    }
}
2.使用Win32 API的:

using
 System;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
using System.Threading;

namespace SimpleCamera
{
    class Program
    {
        [DllImport("gdi32.dll")]
        private static extern IntPtr CreateDC(string driver, string device, string win16, IntPtr printDev);

        [DllImport("gdi32.dll")]
        private static extern bool BitBlt(IntPtr outputDC, int left, int top, int width, int height, IntPtr sourceDC, int x, int y, int opt);

        static void Main(string[] args)
        {
            Thread.Sleep(5000);
            
            //
获取与屏幕相关的DC,并基于此DC生成Graph
            IntPtr screenDC = CreateDC("DISPLAY"nullnullIntPtr.Zero);
            Graphics screenGraph = Graphics.FromHdc(screenDC);

            //
以屏幕Ghraph为基础,生成位图
            Image outputImage = new Bitmap(1024, 768, screenGraph);
            
            //
获取与位图关联的Graph,并基于此获得位图的DC
            Graphics imgGraph = Graphics.FromImage(outputImage);
            IntPtr imgDC = imgGraph.GetHdc();

            //
使用Win32 API "灌图"
            BitBlt(imgDC, 0, 0, 1024, 768, screenDC, 0, 0, 0xCC0020);
            
            //
保存位图
            imgGraph.ReleaseHdc(imgDC);
            outputImage.Save(@"C:\水之真谛.jpg"ImageFormat.Jpeg);
        }
    }
}





本文转自 水之真谛 51CTO博客,原文链接:http://blog.51cto.com/liutiemeng/18757,如需转载请自行联系原作者
目录
相关文章
|
6天前
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
40 12
|
4天前
|
Linux API C#
基于 .NET 开发的多功能流媒体管理控制平台
基于 .NET 开发的多功能流媒体管理控制平台
|
4天前
|
Web App开发 前端开发 调度
一款基于 .NET + Blazor 开发的智能访客管理系统
一款基于 .NET + Blazor 开发的智能访客管理系统
|
4天前
|
前端开发 JavaScript C#
基于.NET8+Vue3开发的权限管理&个人博客系统
基于.NET8+Vue3开发的权限管理&个人博客系统
|
4天前
|
网络协议 C#
基于.NET WinForm开发的一款硬件及协议通讯工具
基于.NET WinForm开发的一款硬件及协议通讯工具
|
4天前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
|
2月前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
46 4
|
2月前
|
机器学习/深度学习 人工智能 物联网
.NET 技术:引领未来开发潮流
.NET 技术以其跨平台兼容性、高效的开发体验、强大的性能表现和安全可靠的架构,成为引领未来开发潮流的重要力量。本文深入探讨了 .NET 的核心优势与特点,及其在企业级应用、移动开发、云计算、人工智能等领域的广泛应用,展示了其卓越的应用价值和未来发展前景。
65 5
|
2月前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
2月前
|
开发框架 JavaScript 前端开发
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!