Java实现屏幕截图功能_第1页
Java实现屏幕截图功能_第2页
Java实现屏幕截图功能_第3页
Java实现屏幕截图功能_第4页
Java实现屏幕截图功能_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

java实现屏幕截图功能摘要捕捉图像方式灵活,主要可以捕捉整个屏幕、活动窗口、选定区域、固定区域、选定控件、选定菜单等,图像输出方式多样,主要包括文件、剪贴板、画图。软件具有捕捉光标、设置捕捉前延时、显示屏幕放大镜、自定义捕捉热键、图像文件自动按时间或模板命名。捕捉到的图像能够以保存图像文件、复制到剪贴板、等多种方式输出。图像文件自动命名功能,能够对捕捉到的图片进行自动命名保存,可以设置根据时间或文件名模板自动保存。捕捉图像预览功能,在捕捉完成后,显示预览窗口。图像保存目录及格式设置功能,可以为捕捉的图像规定默认保存位置及图像格式,图像格式包括BMP、GIF、JPG、PNG、TIF等。捕捉层叠菜单功能,在选定菜单捕捉时可以设置是否捕捉层叠(级联)菜单。可以截取多个图片,分多层界面显示已截图片。关键词:截图;保存;复制到剪切板iJavaimplementationscreenshotfunctionAbstractCapturetheimageflexibly,andthemaincancapturethewholescreen,theactivewindow,theselectedregion,fixedarea,theselectedcontrol,selectmenu,imageoutputwaydiverse,mainlyincludingdocuments,clipboard,drawing.Softwareistocapturethecursor,setthedelaybeforecapture,displayscreenmagnifier,customcapturehotkey,automaticimagefileontimeortemplatename.Capturetheimagetosavetheimagefile,copiedtotheclipboard,avarietyofways,suchastheoutput.Imagefilenamedfunctionautomatically,tobeabletocapturetheimageautomaticallynamedsave,canbesetaccordingtotimeortemplateautomaticallysavedinthefilename.Capturetheimagepreviewfunction,aftercompletionofthecapture,displaythepreviewwindow.Imagesavedirectoryandformatsettingfunction,canbepreservedtocaptureimagesoftheprovisionsofthedefaultlocationandimageformat,imageformat,includingBMP,GIF,JPG,PNG,TIF,etc.Whencapturetocapturethecascadingmenufunction,theselectedmenuyoucansetwhethertocapturethecascadingmenu(cascade).Cancapturemultipleimages,multi-layerinterfacehassectionalimagedisplay.Keywords:capture;Save;Copiedtotheclipboard目录摘要.iAbstract.ii目录.11绪论.11.1选题背景.11.2课题研究内容.12开发平台及技术.32.1Eclipse.32.2Java.42.2.1历史起源.42.2.2基本组成.42.2.3主要特性.42.2.4基本术语.63可行性分析及开发环境的选择.73.1可行性分析.73.1.1技术可行性分析.73.1.2经济可行性分析.73.1.3法律可行性分析.73.1.4开发人员与进程可行性分析.73.1.5结论意见.83.2运行环境的选择.83.3开发工具的选择.84系统需求分析.94.1性能需求.94.2E-R图设计.95系统设计.115.1本系统的设计目标.115.2系统功能整体设计.116系统设计实现.126.1系统主界面实现.126.2系统截图实现.136.2.1图片的保存路径.216.2.2图片的保存格式.237系统测试与性能分析.267.1软件测试.267.1.1软件测试概述.267.1.2系统整体测试步骤.267.2截图软件系统测试.277.2.1保存选项测试.277.2.2复制到粘贴板选项测试.277.3测试结果评价.27总结.28参考文献.29致谢.30外文引用.31中文翻译.3801绪论截图是由电脑截取的显示在屏幕或其他显示设备上的可视图像。通常截图可以由操作系统或专用截图软件截取,也有外部设备如数码相机拍摄。截图也分静态截图与动态截图,前者截图得到一个位图文件,如BMP、PNG、JPEG。而后者得到动态的GIF图片或一段视频文件。1.1选题背景随着计算机技术的高速发展,特别是计算机网络技术与数据库技术的发展,使得人们的生活与工作方式发生了极大的改观。伴随着计算机互联网技术的高速发展,数字化的时代已经正式的走进了我们的学习、生活和工作中,也大幅度的改善和丰富了人们的文化生活,提高了人们的生活质量,互联网技术和数据库技术的完美结合给人们的生活带来了巨大且客观的影响。高效率工作已然成为社会主题,很多时候,截图软件可以帮助我们提高很多工作效率和生活节奏。截图软件可以帮助我们截图,保存,复制等功能,完善生活和工作的需要,工作中需要图片粘贴,书写文档等。生活中我们可以通过截图软件分享图片和解决问题等。截图方法又分为好多种,其中最常见的就是以下几种:浏览器截图有些浏览器高级版本自带截图功能,免去了抓图需要启动相关软件的麻烦。TT浏览器屏幕截图一直是深受大家喜爱的功能,新版本对这个功能进行了升级,现在截图后编辑时插入的方框等可以选择线条粗细了!还可以使用小画刷,自由涂抹。播放软件截图一些播放软件或游戏模拟器也提供截图功能,如PowerDVD、超级解霸、金山影霸等都有抓图功能。操作一般为单击控件,截图就会被保存至软件默认的文件夹。聊天工具截图用聊天软件QQ就可以截图。QQ截图可以在聊天过程中选择聊天窗口下面的一个小显示器加小剪刀图标,然后拖动鼠标出现小框选择要截取的屏幕部分。之后双击鼠标就可以把要截取的部分粘贴到聊天窗口里。还有一种方法是QQ软件开着,但是不管有没有聊天窗口可以按CTRL+ALT+A键,同样可以截取,截取之后的内容想用的时候在任何可以粘贴的软件中按粘贴即可。或者按快捷键CTRL+V也可以实现粘贴。两种方法在想取消截屏时按鼠标右键都可以取消。专业截图工具用专门的截图软件(比如HyperSnap-DX2)截图。另外需要在主菜单的“捕捉-启用特殊捕捉”中选择“DirectX/Direct3D主表面”和“DirectX覆盖”,不然截出来可能是一片黑。如果搞不清,干脆就把全部选项都选上。1.2课题研究内容本次设计,本着简单操作的目的,设计出一款可以不联网也能够进行简单的截图1软件。捕捉图像方式灵活,主要可以捕捉整个屏幕、活动窗口、选定区域、固定区域、选定控件、选定菜单等,图像输出方式多样,主要包括文件、剪贴板、画图。软件具有捕捉光标、设置捕捉前延时、显示屏幕放大镜、自定义捕捉热键、图像文件自动按时间或模板命名捕捉到的图像能够以保存图像文件、复制到剪贴板、等多种方式输出。图像文件自动命名功能,能够对捕捉到的图片进行自动命名保存,可以设置根据时间或文件名模板自动保存。捕捉图像预览功能,在捕捉完成后,显示预览窗口。图像保存目录及格式设置功能,可以为捕捉的图像规定默认保存位置及图像格式,图像格式包括BMP、GIF、JPG、PNG、TIF等。捕捉层叠菜单功能,在选定菜单捕捉时可以设置是否捕捉层叠(级联)菜单。可以截取多个图片,分多层界面显示已截图片。22开发平台及技术本章主要介绍软件开发平台如何选择,以及开发平台的合理配置。本软件涉及到的开发平台是Eclipse,数据库为SQLserver2005,开发技术是JAVA技术。下文详述了选择的理由和配置的方法。2.1EclipseEclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过外挂程式使其作为其他计算机语言比如C+和Python的开发工具。Eclipse本身只是一个框架平台,但是众多外挂程式的支持使得Eclipse拥有其他功能相对固定的IDE软体很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。Eclipse最初由IBM公司开发,2001年11月贡献给开源社区,现在它由非营利软体供应商联盟Eclipse基金会(EclipseFoundation)管理。Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于Java开发工具。尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C+、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于Eclipse的应用程序的一个突出例子是IBMRationalSoftwareArchitect,它构成了IBMJava开发工具系列的基础。2.2JavaJava是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SUNMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台,(即JavaEE,JavaME,JavaSE)的总称。Java自面世后就非常流行,发展迅速,对C+语言形成了有力冲击。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。32.2.1历史起源Java是一种计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。任职于太阳微系统的詹姆斯高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Java自面世后就非常流行,发展迅速,对C+语言形成了有力冲击。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。2.2.2基本组成Java由四方面组成:Java编程语言Java文件格式Java虚拟机(JVM)Java应用程序接口(JavaAPI)2.2.3主要特性1)Java语言是简单的:Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的垃圾收集机制(即GC),使得程序员不必为内存管理而担忧。2)Java语言是一个面向对象的:Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。3)Java语言是分布式的:Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(javanet),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。4)Java语言是健壮的:Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。5)Java语言是安全的:Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下4载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。6)Java语言是体系结构中立的:Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。7)Java语言是可移植的:这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSIC实现的。8)Java语言是解释型的:如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器(JVM,又称java虚拟机)对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。9)Java是高性能的:与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C+。10)Java语言是多线程的:在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。11)Java语言是动态的:Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(JavaEnterpriseAPIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。2.2.4基本术语final类:为防止他人从你的类上派生新类,此类是不可扩展的。多态类:在java中,对象变量是多态的。而java中不支持多重继承。抽象类:规定一个或多个抽象方法的类本身必须定义为abstract。Java中的每一个类都是从Object类扩展而来的。object类中的equal和toString方法。equal用于测试一个对象是否同另一个对象相等。toString返回一个代表该对象的字符串,几乎每一个类都会重载该方法,以便返回5当前状态的正确表示。(toString方法是一个很重要的方法)通用编程:任何类类型的所有值都可以同object类型的变量来代替。封装:就是把数据和行为结合起在一个包中,并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他的实例字段(instancefield)。重载:当多个方法具有相同的名字而含有不同的参数时,便发生重载。编译器必须挑选出调用哪个方法。数组列表:ArrayList动态数组列表,是一个类库,定义在java.util包中,可自动调节数组的大小。class类object类中的getclass方法返回class类型的一个实例,程序启动时包含在main方法的类会被加载,虚拟机要加载他需要的所有类,每一个加载的类都要加载它需要的类。63可行性分析及开发环境的选择3.1可行性分析可行性研究是在对一种调查鉴定项目的早期发展,调查研究的综合,提出的项目,目的是确定项目是否可行。信息系统技术的可行性,从系统开发的计划开始的研究,论述了系统的开发和示范的强度的可行性,各种系统采用的技术手段是否可以实现。经济可行性的信息系统主要是对项目的经济评价,可行性建设投资体制和效益评估系统的运行带来的组织分析。如果信息系统的可行性研究工作提供的方案可以从人力,资源,组织,确保项目顺利实施完成,而且在经济项目的开发,技术和环境可以保证系统的正常运行。由于系统建设是一项投资大,涉及范围广,复杂的系统工程,因此要充分论证其可行性,以确保投资是准确的,而信息系统的建设是一个完整的作品,必须站在系统的角度论证了其可行性是令人信服的,才有意义。可行性研究的目的是用最小的代价,在尽可能确定问题是否可以在短时间内解决,其目的不是解决问题,而是确定问题是否值得解决,从以下两个方面考虑可行性。3.1.1技术可行性分析截图截图系统则主要采用B/S结构、JAVA语言及Internet网络技术等。这些都是现在主流技术,我们可以轻易找到符合要求的工具。所以,从技术上来说,开发这个系统的技术难题是不太多,且对于使用者来说,易于操作和维护。3.1.2经济可行性分析从我搜集的一些资料来看,屏幕截图系统对计算机硬件没有特殊要求,而我们是自行开发的系统,成本可以忽略不计,还有后期维护的费用也相对比较低廉。综上所述,从技术上、经济上都是可行的,而且要求不高,所以该系统的开发是可行的。3.1.3法律可行性分析从法律角度看,Android是个开放的平台,代码是开放的,作为毕业设计,并不以盈利为目的,且是自主开发设计,因此不会在社会上引起侵权或其它责任问题,在法律上是可行的。3.1.4开发人员与进程可行性分析开发人员都有一定的Java开发功底,并且有指导老师的悉心教导完全可以胜任此次开发。由于此系统开发并不是以盈利为目的,开发周期可以相对较长,因此开发进程方面是可行的。73.1.5结论意见综上所述,此软件开发在不同角度都可行,并且投入少量的工作就能达到明显的效果,故可以确定该系统能够开发。3.2运行环境的选择由于本系统对运行环境没有过高的要求,对机器本身没有太高的要求,一般当前学校或个人电脑完全可满足要求。服务器端在Windows2000、XP或Window7下安装使用,操作简洁、维护方便,用户易操作。客户端可以在Windows98及以上版本运行使用即可。因为本系统是小型系统,只需要一台PC机即可,软件使用的是免费软件,成本比较低。用户只需要登录系统就可以完成它的功能。3.3开发工具的选择Java语言的面向对象、平台无关、分布式、多线程、可靠和安全等特性:面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以被看作是对象。世界中任何实体都可归类于某类事物,任何对象都是某一类事物的实例。对象之间通过消息进行相互作用。平台无关性。Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。平台无关有两种:源代码级和目标代码级。Java主要靠Java虚拟机(JVM)在目标码级实现平台无关性。JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈和寄存器组等。但JVM通常是在软件上而不是在硬件上实现。JVM是Java平台无关的基础,从而确保了Java的平台无关性。Java编程人员在编写完软件后,通过Java编译器将Java源程序编译为JVM的字节代码。任何一台机器只要能够配备了Java解释器,就可以运行自己编写的程序,而不管这种字节码是在何种平台上生成的。可靠性和安全性。Java是源于C+,但它去除了许多C+不可靠因素,可以防止许多编程出现的错误。Java是强类型的语言,要求显式的方法声明,这保证了编译器可以发现方法调用错误,保证程序更加可靠。Java解释器运行时实施检查,可以发现数组和字符串访问的越界。Java不支持指针,这杜绝了内存的非法访问。Java的自动单元收集防止了内存丢失等动态内存分配导致的问题。多线程。线程是操作系统的一种新概念,它又被称作轻量进程,是比传统进程更小的可并发执行的单位。C和C+采用单线程体系结构,而Java却提供了多线程支持6。84系统需求分析4.1性能需求提供两种界面效果,可以供不同用户喜欢效果,界面友好,操作简单易学,方便快捷。4.2E-R图设计ER模型直接从现实世界抽象出实体类型及实体间联系,然后用ER图来表示数据模型。它有两个明显的优点:接近于人的思维,容易理解;与计算机无关,用户容易接受。E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的基本要素是实体型、属性和联系,其表示方法为:实体型:用矩形表示,矩形框内写明实体名;属性:用椭圆形表示,并用无向边将其与相应的实体连接起来;联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。本系统的各实体类的属性图如下图所示:图4.1界面操作属性图图4.2截图管理属性图图4.3退出系统属性图人员操作界面格调人员操作截图人员点击退出系统95系统设计5.1本系统的设计目标JAVA自作屏幕截图系统代替了原来的手工操作,能够快速、准确地截取图片,保存等功能。具体有以下实现功能:快速清细节图操作方便简单提供不能界面效果5.2系统功能整体设计系统开发的总体任务如下:截图部分,操作简单,截图画面清晰,有操作提示。保存到剪切板,提供粘贴到word等功能。保存,提供选择目录界面,现则要保存的界面,保存图片。整体系统流程图如下图5.1所示:NY图5.1系统流程图开始开始截图选取区域双击左键保存复制粘贴板106系统设计实现6.1系统主界面实现系统主界面主要分为三部分:工具栏、界面格局、截图操作区。工具栏整体实现,代码如下:JPanelnewall=newJPanel();newall.add(all,BorderLayout.NORTH);newall.setBorder(BorderFactory.createTitledBorder(工具栏);界面格调部分实现,代码如下:JPaneljp=newJPanel();/放置两个单选按钮的面板jp.add(java=newJRadioButton(JAVA界面);jp.add(system=newJRadioButton(系统界面,true);java.addActionListener(this);system.addActionListener(this);jp.setBorder(BorderFactory.createTitledBorder(界面格调);截图操作区部分代码实现,代码如下:start=newJButton(开始截取);cancel=newJButton(退出);start.addActionListener(this);cancel.addActionListener(this);JPanelbuttonJP=newJPanel();c=newJPanel(newBorderLayout();JLabeljl=newJLabel(截图展示区,JLabel.CENTER);设计出来的主界面如下图6.1所示:图6.1截图系统主界面11如上图6.1所示,主界面分为Java界面与系统主界面两种。界面格局效果代码实现,代码如下:elseif(source=java)/金属外观tryUIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName();SwingUtilities.updateComponentTreeUI(this);catch(Exceptionexe)exe.printStackTrace();elseif(source=system)/本地外观tryUIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();SwingUtilities.updateComponentTreeUI(this);catch(Exceptionexe)exe.printStackTrace();6.2系统截图实现在这个截屏软件的开发过程,其实还是有很多问题的,从一开始我不知道确定做哪个方向的软件到我们确定做截屏软件,再到确定这个截屏软件的具有的功能,以及做后的实现和测试,经历了很多以前从没有经历的事,我在这之前可以说是没有任何的编程验,对于编程的具体过程不是很了解,但在我们慢慢的摸索下,最终还是完成了这个截图软件。开发环境:这个截图软件是在Windows7系统环境下,运用Sun公司提供的JDK及Eclipse软件联合开发出来的。为了使系统具备上述所具备的功能,应该有一个具体的设计思路,并且脑海中应该有整体的系统架构,在经过短暂的资料查找并结合实际运用操作,系统功能的具体实现步骤及界面设计逐渐浮出水面。在对界面设计及系统需要实现的功能有了大致的框架后开始了具体开发该系统的阶段。程序开发环境要求不多,简单的eclipse编程环境。在一开始在网上看的各种截屏软件具有好多功,例如:图像转换、CAD图形、图像管理、3D制作、图像处理、图片压缩等等功能,我的截图功能分为局部小截图和全屏截图。局部截图点击按钮“截图”,拖动鼠标来选择截图的大小,跟普通的截图方式一样,全屏截图拥有一键完成的功能,只要点击按钮“全屏截图”就可完成。截图完成之后会在剪切板显示当前所截得图,点击下方“保存”按钮,保存到相应的目录。上方的按钮“局部截图到剪切板”的功能和“截图”功能类似,只是他截图之后保存在内存,通过到相应的目录下,右击“粘贴”完成截图。还有一点就是,“截图”可以时刻改变所截图的大小,而“局部截图到剪切板”一旦松开左键,便无法改变大小。我们这个截图软件的代码部分分成了四个类,分别是CaptureScreen这个类主要是主界面的设计,以及各种功能的事件监听注册和将事件对象传入事件处理器。第二各类是ClipBoard这个类是完成区域截取到剪贴板的功能,第三个类是ScreenSizeutil,这个类是完成全屏截取的功能,最后一个类是Screenshot,这个类是完成截取屏幕的功能。其中,一开始考虑到这个软件界面的美化问题,觉得应该在中间的面板里加个背景,也已近实现了,但是可惜的是,加了背景图片之后,会12覆盖掉截取屏幕之后放在面板里面的内容,进过长时间的讨论分析,修改,还是解决不了这个问题,虽然我们的这个截屏小软件界面很简单,布局也不是很合理,但是该有的功能能实现,所以觉得还是挺好的。/起点横纵坐标,终点横纵坐标的实现,代码如下:publicvoidpaintComponent(Graphicsg)g.drawImage(bi,0,0,width,height,this);g.setColor(Color.RED);g.drawLine(startX,startY,endX,startY);g.drawLine(startX,endY,endX,endY);g.drawLine(startX,startY,startX,endY);g.drawLine(endX,startY,endX,endY);intx=startXendX?startX:endX)-5,y-5,10,10);rec3=newRectangle(startXendX?startX:endX)-5,y1-5,10,10);rec4=newRectangle(startXendX?startX:endX)-5,(startYendY?startY:endY)-5,10,10);rec5=newRectangle(x1-5,(startYendY?startY:endY)-5,10,10);rec6=newRectangle(x-5,(startYendY?startY:endY)-5,10,10);rec7=newRectangle(x-5,y1-5,10,10);/设置开始截图时的提示窗口if(showTip)g.setColor(Color.CYAN);/提示框的背景色设为青色g.fillRect(p.x,p.y,230,20);g.setColor(Color.RED);/边框色设为红色g.drawRect(p.x,p.y,230,20);g.setColor(Color.BLACK);/提示框内字体颜色为黑色g.drawString(请按住鼠标左键不放选择截图区后双击截图,p.x,p.y+15);13截图工具矩形区域各顶点以及中点。如下图6.2所示:图6.2截图选定区域各顶点丶中点展示/特意定义一个方法处理鼠标移动,是为了每次都能初始化一下所要选择的区域privatevoiddoMouseMoved(MouseEventme)if(select.contains(me.getPoint()this.setCursor(newCursor(Cursor.MOVE_CURSOR);current=States.MOVE;elseStatesst=States.values();for(inti=0;istartX?END_X:START_X);currentY=0;break;caseWEST:currentX=(endXstartX?START_X:END_X);currentY=0;break;caseNORTH:currentX=0;currentY=(startYendY?END_Y:START_Y);break;caseSOUTH:currentX=0;currentY=(startYendY?START_Y:END_Y);break;caseNORTH_EAST:currentY=(startYendY?END_Y:START_Y);currentX=(endXstartX?END_X:START_X);break;caseNORTH_WEST:current

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论