CopyFromScreen方法的使用案例

写在前面:有没有想过屏幕捕捉是很简单的事情?至少,在.Net上面,是很简单的事情,还有一个方法专门提供了这个功能,它就是CopyFromScreen方法,是Graphics的实例的一个方法,可以将当前屏幕上面的指定区域捕捉下来。如果对这个功能做进一步的扩展,很容易就可以做出一个像红蜻蜓一样的屏幕捕捉工具,当然,专业水平肯定还不及人家的产品的。

效果图
效果图中显示有多个控件,其中重要的是名为“捕捉屏幕”的按钮,三组数据的输入框和一个显示图形的盒子(PictureBox),实现的原理是,先指定要捕捉的位置和捕捉的大小,新建一个这样大小的空的图像(Bitmap),然后,从Bitmap中提取出Graphics的实例,使用这个实例,调用CopyFromScreen方法获取抓取屏幕中的图形区域,这样,Bitmap中就有图形了。再将Bitmap放入PictureBox显示就可以了。注意,输入的X轴,Y轴,大小的数据都必须是数字,下面的程序中,并没有处理错误输入的情况,输入后,点击“捕捉屏幕”就能够显示图片了。
 

源代码
下面代码的关键是Graphics.FromImage和CopyFromScreen方法,前者表示从指定的 System.Drawing.Image 创建新的 System.Drawing.Graphics,后者表示,使用Graphics对象的实例调用捕捉屏幕功能,也就是所谓执行颜色数据(对应于由像素组成的矩形)从屏幕到 System.Drawing.Graphics 的绘图图面的位块传输。最后设置pictureBox1就行了。
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {          
            //通过输入的数据获取需要捕捉的区域的大小和位置
            int sizeWidth = Convert.ToInt32(textBoxSize.Text);
            int sizeHeight = Convert.ToInt32(textBoxSize.Text);
            int sourceX = Convert.ToInt32(textBoxX.Text);
            int sourceY = Convert.ToInt32(textBoxY.Text);

            //设置图像的大小
            Bitmap _bitMap = new Bitmap(sizeWidth, sizeHeight);
            Graphics g = Graphics.FromImage(_bitMap);
            //从指定的区域中复制图形
            g.CopyFromScreen(sourceX, sourceY, 0, 0, new Size(sizeWidth, sizeWidth));
            //把图形放在PictureBox中显示
            pictureBox1.Image = _bitMap;
            g.Dispose();
            //不能使用Dispose,不然图片就没有了,同时也会引起异常
            //_bitMap.Dispose();
        }
   }

本站中使用屏幕捕捉功能的相关文章

.Net(C#)自定义WinForm控件之屏幕捕捉(Teboscreen)

http://www.myfirm.cn/news/DotNetUserInterface/20080220010644407.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值