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,如需转载请自行联系原作者
目录
相关文章
|
17天前
|
敏捷开发
【sgCreatePinyin】自定义小工具:敏捷开发→自动化生成拼音字段名称(字段名生成工具)
【sgCreatePinyin】自定义小工具:敏捷开发→自动化生成拼音字段名称(字段名生成工具)
|
1月前
|
移动开发 安全 数据安全/隐私保护
iOS 全局自动化代码混淆工具!支持 cocoapod 组件代码一并混淆
iOS 全局自动化代码混淆工具!支持 cocoapod 组件代码一并混淆
|
1月前
|
Web App开发 前端开发 测试技术
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
|
1月前
|
测试技术
现代软件测试中的自动化工具与挑战
传统软件测试面临着越来越复杂的系统架构和不断增长的测试需求,自动化测试工具应运而生。本文将探讨现代软件测试中自动化工具的应用和挑战,深入分析其优势与局限性,为软件测试领域的发展提供思路和启示。
|
1月前
|
jenkins 测试技术 持续交付
现代软件测试中的自动化工具与挑战
随着软件开发领域的不断发展,自动化测试工具在测试过程中扮演着越来越重要的角色。本文将探讨现代软件测试中自动化工具的应用及面临的挑战,旨在帮助开发人员和测试人员更好地理解和应对自动化测试中的问题。
|
1月前
|
人工智能 运维 监控
构建高性能微服务架构:现代后端开发的挑战与策略构建高效自动化运维系统的关键策略
【2月更文挑战第30天】 随着企业应用的复杂性增加,传统的单体应用架构已经难以满足快速迭代和高可用性的需求。微服务架构作为解决方案,以其服务的细粒度、独立性和弹性而受到青睐。本文将深入探讨如何构建一个高性能的微服务系统,包括关键的设计原则、常用的技术栈选择以及性能优化的最佳实践。我们将分析微服务在处理分布式事务、数据一致性以及服务发现等方面的挑战,并提出相应的解决策略。通过实例分析和案例研究,我们的目标是为后端开发人员提供一套实用的指南,帮助他们构建出既能快速响应市场变化,又能保持高效率和稳定性的微服务系统。 【2月更文挑战第30天】随着信息技术的飞速发展,企业对于信息系统的稳定性和效率要求
|
1天前
|
存储 运维 Shell
Ansible自动化运维工具安装和基本使用
Ansible 是一款无代理的IT自动化工具,通过SSH连接目标主机执行配置管理、应用部署和云端管理任务。它使用YAML编写的Playbook定义任务,核心组件包括Playbook、模块、主机清单、变量等。Ansible的优势在于易用、功能强大、无须在目标主机安装额外软件,并且开源。安装过程涉及配置网络源、yum安装和SSH密钥设置。通过定义主机清单和使用模块进行通信测试,确保连接成功。
Ansible自动化运维工具安装和基本使用
|
17天前
|
敏捷开发
【sgCreateTableData】自定义小工具:敏捷开发→自动化生成表格数据数组[基于el-table]
【sgCreateTableData】自定义小工具:敏捷开发→自动化生成表格数据数组[基于el-table]
|
24天前
|
Java 测试技术 API
软件测试中的自动化工具与策略
软件测试是确保软件质量的重要环节,而自动化测试工具和策略的应用在提高测试效率和准确性方面发挥着重要作用。本文将介绍几种常见的自动化测试工具,并探讨在软件测试中应用自动化测试的最佳实践和策略。
|
26天前
|
Web App开发 Java 测试技术
深入理解与应用软件自动化测试工具Selenium
随着软件开发的快速发展,软件测试在保证产品质量方面发挥着越来越重要的作用。其中,自动化测试以其效率高、成本低的特点受到了广大开发者的欢迎。本文主要介绍了自动化测试工具Selenium的基本概念、原理以及在实际开发中的应用,旨在帮助读者更好地理解和使用Selenium进行高效的自动化测试。
22 4