




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
截图代码Posted on 2007-07-16 13:02 小y 阅读(6925) 评论(20) 编辑 收藏 可以利用Graphics类的CopyFromScreen方法来实现屏幕截取,舍弃了比较麻烦的API函数,只要几句代码就能实现了,而且这个这个方法能实现只抓取部分区域的屏幕,可以实现类似qq抓屏的功能。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Drawing;usingSystem.Drawing.Imaging;usingSystem.Windows.Forms;namespaceConsoleApplication1.classProgram.staticvoidMain(stringargs). /获得当前屏幕的分辨率Screenscr=Screen.PrimaryScreen;Rectanglerc=scr.Bounds;intiWidth=rc.Width; intiHeight=rc.Height; /创建一个和屏幕一样大的BitmapImagemyImage=newBitmap(iWidth,iHeight); /从一个继承自Image类的对象中创建Graphics对象Graphicsg=Graphics.FromImage(myImage); /抓屏并拷贝到myimage里g.CopyFromScreen(newPoint(0,0),newPoint(0,0),newSize(iWidth,iHeight); /保存为文件myImage.Save(c:/1.jpeg);以上内容转自lijgame的blog,在此对作者表示感谢!原文地址:/lijgame/archive/2006/12/18/1447921.aspx现在就文中的“实现QQ截屏”功能继续研究如下。 1、首先要实现在屏幕上画图,即:可以在屏幕上画出一个矩形框,双击该矩形框将截取矩形框内的屏幕。目前在屏幕上画图的C实现代码如下:DllImport(User32.dll)publicexternstaticSystem.IntPtrGetDC(System.IntPtrhWnd);privatevoidbutton19_Click(objectsender,EventArgse)System.IntPtrDesktopHandle=GetDC(System.IntPtr.Zero);Graphicsg=Graphics.FromHdc(DesktopHandle);g.DrawRectangle(newPen(Color.Red),newRectangle(10,10,100,100);需要用到可恶的API,实在不想用这种方法来实现!2、研究出QQ屏幕上画图的真相继续研究QQ截图的功能,发现当点击“截图”按钮之后,屏幕变成静止的了,原先网页上跳动的东西都不动了,哈哈,原因很简单,QQ截取了整个屏幕,然后用这张静止的屏幕覆盖全屏,真是精妙的解决办法啊!于是用C实现是:建一个子窗体ScreenForm ,在窗体上放一个pictureBox和一个label控件。ScreenForm代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;namespacecopyScreenpublicpartialclassScreenForm:FormpublicScreenForm()InitializeComponent();publiceventcopyToFatherTextBoxcopytoFather;/截屏完毕后交个父窗体处理截图publicboolbegin=false;/是否开始截屏publicboolisDoubleClick=false;publicPointfirstPoint=newPoint(0,0);/鼠标第一点publicPointsecondPoint=newPoint(0,0);/鼠标第二点publicImagecachImage=null;/用来缓存截获的屏幕publicinthalfWidth=0;/保存屏幕一半的宽度publicinthalfHeight=0;/保存屏幕一般的高度/*复制整个屏幕,并让窗体填充屏幕*/publicvoidcopyScreen()Rectangler=Screen.PrimaryScreen.Bounds;Imageimg=newBitmap(r.Width,r.Height);Graphicsg=Graphics.FromImage(img);g.CopyFromScreen(newPoint(0,0),newPoint(0,0),r.Size);/窗体最大化,及相关处理this.Width=r.Width;this.Height=r.Height;this.Left=0;this.Top=0;pictureBox1.Width=r.Width;pictureBox1.Height=r.Height;pictureBox1.BackgroundImage=img;cachImage=img;halfWidth=r.Width/2;halfHeight=r.Height/2;this.Cursor=newCursor(GetType(),MyCursor.cur);privatevoidScreenForm_Load(objectsender,EventArgse)copyScreen();/*鼠标按下时开始截图*/privatevoidpictureBox1_MouseDown(objectsender,MouseEventArgse)if(!isDoubleClick)begin=true;firstPoint=newPoint(e.X,e.Y);changePoint(e.X,e.Y);msg.Visible=true;/*鼠标移动时显示截取区域的边框*/privatevoidpictureBox1_MouseMove(objectsender,MouseEventArgse)if(begin)/获取新的右下角坐标secondPoint=newPoint(e.X,e.Y);intminX=Math.Min(firstPoint.X,secondPoint.X);intminY=Math.Min(firstPoint.Y,secondPoint.Y);intmaxX=Math.Max(firstPoint.X,secondPoint.X);intmaxY=Math.Max(firstPoint.Y,secondPoint.Y);/重新画背景图Imagetempimage=newBitmap(cachImage);Graphicsg=Graphics.FromImage(tempimage);/画裁剪框g.DrawRectangle(newPen(Color.Red),minX,minY,maxX-minX,maxY-minY);pictureBox1.Image=tempimage;/计算坐标信息msg.Text=左上角坐标:(+minX.ToString()+,+minY.ToString()+)rn;msg.Text+=右下角坐标:(+maxX.ToString()+,+maxY.ToString()+)rn;msg.Text+=截图大小:+(maxX-minX)+(maxY-minY)+rn;msg.Text+=双击任意地方结束截屏!;changePoint(minX+maxX)/2,(minY+maxY)/2);/*动态调整显示信息的位置,输入参数为当前截屏鼠标位置*/publicvoidchangePoint(intx,inty)if(xhalfWidth)if(yhalfHeight)msg.Top=halfHeight;msg.Left=halfWidth;elsemsg.Top=0;msg.Left=halfWidth;elseif(yhalfHeight)msg.Top=halfHeight;msg.Left=0;elsemsg.Top=0;msg.Left=0;/*鼠标放开时截图操作完成*/privatevoidpictureBox1_MouseUp(objectsender,MouseEventArgse)begin=false;isDoubleClick=true;/之后再点击就是双击事件了/*双击时截图时,通知父窗体完成截图操作,同时关闭本窗体*/privatevoidpictureBox1_DoubleClick(objectsender,EventArgse)if(firstPoint!=secondPoint)intminX=Math.Min(firstPoint.X,secondPoint.X);intminY=Math.Min(firstPoint.Y,secondPoint.Y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小猪佩奇的奇妙冒险童话作文5篇
- 特色养殖合作与技术支持协议
- 委托开发新赛项协议
- 义务教育合作协议
- 公交公司关爱员工活动方案
- 黄鹤楼送友人:古诗中的友情主题教学教案
- 关于学习经验的初一作文700字9篇
- 畅想未来童话作文10篇范文
- 公共关系公司策划方案
- 公关公司开业策划方案
- 四年级下册综合实践活动教案-我的时间我做主 全国通用
- 304不锈钢管材质证明书
- 预拌混凝土及原材料检测理论考试题库(含答案)
- 3~6岁儿童早期运动游戏干预课程设计研究-基于SKIP的研究证据
- 《植物生理学》课件第三章+植物的光合作用
- 游泳馆网架翻新施工组织方案设计
- 3.1 定格青春——向艺术家学创作 课件-2021-2022学年高中美术人美版(2019)选修绘画
- 有机化学所有的命名--超全.
- 引水罐的设计计算
- 三年级译林版英语下学期按要求写句子专项强化练习题
- 电缆接线工艺设计规范流程
评论
0/150
提交评论