`

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

阅读更多
<meta content="MSHTML 6.00.2900.3199" name="GENERATOR"> <style></style>2006年03月29日 12:38:00

花絮
上火了,眼睛疼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 <place w:st="on">Main</place>(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 <place w:st="on">Main</place>(string[] args)
{
Thread.Sleep(5000);

//
获取与屏幕相关的DC,并基于此DC生成Graph
IntPtr screenDC = CreateDC("DISPLAY", null, null, IntPtr.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);
}
}
}

此实例再次印证了这样一句话:对类库越了解,就能写出性能越高的程序来。类库的作用就是避免我们自己"从轮子造起"

法律声明:本文章受到知识产权法保护,任何单位或个人若需要转载此文,必需保证文章的完整性(未经作者许可的任何删节或改动将视为侵权行为)。若您需要转载,请务必注明文章出处为CSDN以保障网站的权益;请务必注明文章作者为刘铁猛,并向bladey@tom.com发送邮件,标明文章位置及用途。转载时请将此法律声明一并转载,谢谢!



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=642793


分享到:
评论

相关推荐

    基于.NET Framework2.0的Windows窗体应用开发认证考试(汉70-526)

    【标题】:“基于.NET Framework2.0的Windows窗体应用开发认证考试(汉70-526)” 本文将深入探讨.NET Framework 2.0版本下的Windows窗体应用程序开发,以及与之相关的认证考试——汉70-526。这个考试主要面向的是...

    .net 2.0 图表控件WinForm WebForm通用

    综上所述,.NET 2.0图表控件为开发者提供了一个强大的图形化工具,无论是在WinForm还是WebForm环境下,都能有效地将数据转化为直观的图表,提升应用的用户体验。通过学习和实践,开发者可以充分利用这些功能来提升...

    分别适用于.NET Framework 2.0和4.0的Excel.dll

    .NET Framework 4.0:这个版本在2010年发布,带来了大量的新功能和性能优化,包括改进的垃圾收集算法、并行计算支持(Task Parallel Library)、动态类型(dynamic关键字)、内存流(MemoryStream)的改进和大量新库...

    Winfrom 界面库 CSkin支持.net 2.0 .net4.0

    CSkin是一款专为Windows Forms(Winform)设计的界面库,它主要针对.NET Framework 2.0和.NET Framework 4.0提供了丰富的界面皮肤化功能。这个库的目的是提升Winform应用的外观和用户体验,使其看起来更加现代和吸引...

    C#winform用ThoughtWorks.QRCode生成二维码运行环境.net framework 2.0.x +

    在C# winform桌面应用程序中,使用ThoughtWorks.QRCode生成二维码,最低运行环境版本支持.net framework 2.0.x,可以在xp系统上运行。本demo采用vs2010开发。

    基于.NET Framework 4.0+.NET8等框架的C# WinForm开源控件库、工具类库、扩展类库、多页面开发框架

    SunnyUI.NET便是这样一款专为C# WinForm开发者量身定制的开源框架,它支持.NET Framework 4.0及以上版本,以及.NET6、.NET7、.NET8新框架。这个框架集成了控件库、工具类库、扩展类库和多页面开发框架,旨在提升开发...

    cefglue vs2010 .net2.0整合版

    "cefglue vs2010 .net2.0整合版" 指的是一个特别构建的软件开发项目,它将CefGlue库与Visual Studio 2010以及.NET Framework 2.0进行了集成。CefGlue是一个基于Chromium Embedded Framework(CEF)的.NET绑定库,...

    webkit.net 0.5版,c#和winform嵌入chrome核心浏览器控件

    webkit.net 0.5版,c#和winform嵌入chrome核心浏览器控件 原来的sourceforge有时候连不上,特先下载好再上传上来,并带了一个说明,解决了在编译安后时会遇到的:failed to initialize activation context问题。

    Apress - Pro .NET 2.0 Windows Forms and Custom Controls in C# (Dec 2005)

    《精通.NET 2.0 C# Windows窗体和自定义控件》这本书是针对C#开发者深入学习.NET Framework 2.0中Windows Forms应用程序开发的重要参考资料。书中详细讲解了如何利用C#语言来构建功能丰富的桌面应用,尤其关注...

    《零基础学ASP.NET 2.0》第1章 认识ASP.NET 2.0 1

    1.1 ASP.NET 2.0 是什么 1 1.2 第一个ASP.NET 2.0网站 2 1.2.1 创建网站 2 1.2.2 设计网站 3 1.2.3 通过预编译发布网站 5 1.3 ASP.NET 2.0必须具备的HTML知识...1.5.3 有C#的WinForm编程经验是否对ASP.NET开发有帮助 16

    (解压密码1234) C#混淆加密大师1.1.0

    C#混淆加密大师可以加密混淆C#编写的dll和exe程序(包括Winform程序, WPF程序, Unity游戏程序,控制台程序等),支持.Net Framework 2.0 ~ .Net Framework 4.x, 以及.NET Core 2.0 - .NET 8。 除了加密混淆代码...

    Inoo Setup打包.net Winform程序源代码

    这篇文章主要介绍如何使用Inno Setup工具来构建一个具备自动检测和安装.NET Framework及SQL Server功能的安装包。 Inno Setup是一个免费的安装制作软件,它可以生成Windows安装程序,支持自定义安装路径、添加启动...

    .Net Framework 4.7.2离线版

    .Net Framwork 4.7.2 C# Winform 运行所需的环境,打包生成软件运行所需环境。

    asp.net2.0开发入门

    【标题】"asp.net2.0开发入门"涵盖了ASP.NET 2.0版本的基础知识,是初学者了解和学习此框架的良好起点。ASP.NET是由微软公司推出的用于构建动态Web应用程序的开发平台,2.0版本在1.1的基础上做了很多改进和增强,...

    FlaUISpy源码,通过FlaUInspect 翻的winform版本,支持.NET Framework4.0

    总的来说,FlaUISpy的Winform版本是.NET Framework 4.0环境下UI自动化测试的重要工具,它为开发者提供了强大的UI元素检测和调试能力。通过对源码的研究和利用,开发者可以更好地适应各种项目需求,提升软件开发的...

    ASP.NET v2.0 入门50例源码

    ASP.NET v2.0 入门50例源码

    asp.net 2.0深入编程

    在.NET平台上,ASP.NET 2.0是构建动态Web应用程序的重要工具,它提供了丰富的功能和高效的性能,使得Web应用开发更加便捷。 本书首先会介绍ASP.NET 2.0的基础知识,包括ASP.NET的架构、生命周期和页面模型。这些...

    .net framework开机自启动

    .NET Framework 开机自启动是Windows应用程序开发者经常遇到的需求,它涉及到Windows操作系统中的启动项管理和.NET Framework的编程技术。本文将详细解析如何通过注册表设置应用开机自启动,并结合WinForm和.NET ...

    ldap c# 测试工具以及源代码(vs2010 winform .net2.0)

    总结来说,这个压缩包提供的是一种使用C#开发的、基于WinForms的 LDAP 测试工具,适用于Visual Studio 2010,并且使用了.NET Framework 2.0。它具有验证Active Directory用户身份的功能,通过图形界面与用户交互,且...

Global site tag (gtag.js) - Google Analytics