<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 2.0 图表控件WinForm WebForm通用,需要的可以下载回去看看
基于.net framework2.0窗体应用开发认证题
在C# winform桌面应用程序中,使用ThoughtWorks.QRCode生成二维码,最低运行环境版本支持.net framework 2.0.x,可以在xp系统上运行。本demo采用vs2010开发。
压缩文件里包含了分别适用于.NET Framework 2.0和4.0的两个Excel.dll。 大家在编写操作excel表格的代码时,添加引用是个麻烦事,直接引用Excel.dll会更加方便。
winform皮肤控件,支持.net framework 2.0,使用方法附在压缩包里的文档中。
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
webkit.net 0.5版,c#和winform嵌入chrome核心浏览器控件 原来的sourceforge有时候连不上,特先下载好再上传上来,并带了一个说明,解决了在编译安后时会遇到的:failed to initialize activation context问题。
.net framework4.0框架 winform页面 数据分页控件 无其他任何引用 c#语言编写。
ASP.NET v2.0 入门50例源码
cefglue vs2010 .net2.0整合版,C#于JS交互,可以播放MP4的cef版本。
ldap c# 测试工具以及源代码(vs2010 winform .net2.0) 里面可以测试各种连接,主要是用来验证用户和密码是否正确
文件下载源代码 C#.net2.0 压缩文件夹,速度快,好用
可以设置和读取IP地址,具有跟Window的IP地址输入框一样的功能,箭头方向键、空格、句点、删除键可以在四个IP地址段内连续移动,可拉伸控件...开发于.Net Framework 4.5.2,更高版本请测试使用,或者留言索取更高版本。
该工具主要支持两大功能: 1、批量执行SQL脚本文件; 2、文件拷贝操作。 其中,App.config为工具配置文件, ;DataBase = master;User ID=sa; password="/> 上述 ;DataBase = master;User ID=sa; password=...
ZedGraph winform打印 统计报表 打印组建 统计组件 源代码.NET2.0 ZedGraphV515是C#编写的.NET类库,提供了用户控件和web控件。它可以创建2D的线性图、条形图和饼图。 它功能完整且有详细的功能自定义。 基于LGPL...
可选择打开任意excel表格,并将其中内容读取至界面显示,点击按钮修改excel中内容,是先excel读写示例。
许多技术人员在面对.NET Framework 3.0/3.5大量的新知识、新技术的时候感到彷徨,对自己现有的技术知识是否过时会产生疑问,对新技术会产生抵触的情绪,其实,只要能学习到真正代表业界趋势的技术,花不太多的时间...
SunnyUI.NET 是基于.NET Framework 4.0+、.NET6、.NET7、.NET8 框架的 C# WinForm 开源控件库、工具类库、扩展类库、多页面开发框架。
微软.Net2.0企业库的WebForm和WinForm的配置方法.zip