【基于Java的QQ屏幕截图工具设计(论文)】_第1页
【基于Java的QQ屏幕截图工具设计(论文)】_第2页
【基于Java的QQ屏幕截图工具设计(论文)】_第3页
【基于Java的QQ屏幕截图工具设计(论文)】_第4页
【基于Java的QQ屏幕截图工具设计(论文)】_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

基于Java的QQ屏幕截图工具设计报告目录目录 51.绪论 71.1课题背景 71.2课题研究内容 72.可行性分析及开发环境的选择 82.1可行性分析 82.1.1技术可行性 92.1.2经济可行性 92.1.3法律可行性 92.1.4可行性结论 92.2运行环境的选择 92.3开发工具的选择 102.4B/S结构 113.系统需求分析 123.1业务需求 133.2用户需求 133.3性能需求 134.系统设计 134.1系统的设计目标 144.2系统功能整体设计 145.系统设计实现 155.1系统主界面实现 155.2系统截图实现 175.3截图的编辑实现 235.4截图的存储实现 316.系统测试 356.1截图软件系统测试 356.1.1保存选项测试 356.1.2复制到剪切板选项测试 366.1.3编辑选项测试 366.2测试评价 37结论 37参考文献 38致谢 391.绪论所谓的截图就是将计算机中的某一画面使用图片的方式记录下来,以供操作和使用。截图是从个人需求出发,根据需要获取计算机中的内容,以图片形式将想要获取的内容保存下来,可以对图片进行存储、编辑、发送等多种操作。获取的图标与人眼所示的效果的相同的。通常,计算机以及某些软件就带有截图功能,如QQ就具有截图工具。截取下来的图片大致可以分成两个类别,一种是静态的图标,图片是一种像素文件,一般保存形式的后缀为BMP、PNG、JPG。另一种就是动态形式的图片,是一个动态的文件,保存格式为GIF。截图显示了当时时间下各元素的状态,保存了当时的状态信息。1.1课题背景随着计算机的普及以及信息技术的飞速发展,在信息处理方面,尤其是图片信息的处理方面,需求越来越高。在日常的工作中,无论是沟通还是文件内容的编辑和撰写,其中都涉及了截图的过程,通过截图获取信息或者直观的作为信息传播和展示的载体。提升工作效率是很多企业的目标,也是社会发展所必须的。在文档的撰写过程中通常会花费大量的时间,效果可能并不理想,因此使用截图工具获取图片信息能够简化文档的处理过程。截图工具具有多种功能,例如,截图、保存、复制等,节省了文档的编辑时间,提升的工作效率。不只是在文档的编辑过程中可以使用,也可以灵活的应用于多个工作过程中。现阶段的截图工具中都或多或少的受到条件的限制,影响使用者的操作效率。因此本设计使用Java语言设计了截图工具,为用户提供更加便利的使用条件。1.2课题研究内容为了便于用户的使用和操作,本人设计的是单机版的截图工具,能够根据用户的操作获取相应的截图,同时具有存储、编辑和复制等功能,可以根据需要设置相应的操作热键。本截图工具通过捕捉和追踪光标的位置获取制定区域的截图。用户可以对截取的图片进行重命名,如果没有重命名的话,图片就以系统时间为名称保存。储存的位置用户可以进行选择。当图片存储成功时会出现存储位置的提示窗,同时用户可以选择图片的保存格式。保存之前可以在多层菜单栏中预览保存结果。成功保存的图片都可以浏览,多层菜单栏中能够层层显示图片。用户可以对图片进行编辑,主要是添加文字内容,之后也能够进行保存。2.可行性分析及开发环境的选择2.1可行性分析可行性分析的项目进行,就必须得综合许多方面的知识以及常识,并将它们与即将进行的项目进行比较,从而将项目的相关内容同有关人士进行咨询,在此基础上展开对项目的仔仔细细的钻研,以保证项目的进一步实施,并且结合多方面的资料,对项目给出详细的方案,当然也必须将收益进行预估,必须保证项目的收入满足成本的输出,为项目的设计和完成提供具有合理性、可行性的建议,同时提供坚实的理论基础对项目的整体设计进行指导。可行性分析必须具备一些特征,比如:(1)能够大体的预估收益的大小;(2)能够公平的进行分析与决断;(3)能够保证项目进行的通畅;(4)具有非常可观的理论依据。可行性分析对整个项目的设计、建设、完善具有重要的影响。对项目的可行性进行分析能够及时的发现项目中的不足之处,保证项目的可行性。可行性分析具有以下两点要求。第一,从客观的角度对项目进行分析,先收集相关的资料和数据,同时与社会中的真实数据进行对比,对二者之间的差异情况进行分析,结合实际的社会情况和行业的变化趋势讨论项目是否值得继续进行。第二,可行性研究和分析的内容必须符合国家的多定义原则,研究的主体必须是完整的,不能有缺少的部分。在进行研究时尽可能获取全面的信息数据,保证调查的准确,可行性分析结果具有指导性。2.1.1技术可行性B/S结构中包括两部分,分别是浏览器(Browser)和服务器(Server),本截图工具中主要使用了Java语言以及网络技术,这些技术十分常见。因此,本设计在技术上具有可行性。2.1.2经济可行性本设计在硬件方面的要求不高,由我们全权负责,自行研究,成本需要较低,几乎可以忽略不计,后期的维护也可以自行完成,成本较少。因此本设计在经济上具有可行性。2.1.3法律可行性Eclipse是一个免费的,开放的软件,本设计不用于经营和盈利活动,是自己开发研究的,不存在侵权行为,不会引发其他的法律责任。因此,本设计在法律方面具有可行性。2.1.4可行性结论从以上技术、经济、法律方面进行分析,本设计具有可行性,可以进行后续的研究和开发。2.2运行环境的选择本设计对运行条件和与运行环境没有严格的要求。在Windows系统或者Linux系统中都可以进行使用,但是需要注意的是,系统的版本可能会对效果具有一定的影响。本截图工具只需要一台计算机就能够进行,过程中不需要缴纳任何费用,用户只需登录就能够进行多种操作。2.3开发工具的选择本设计中使用的设计软件是Eclipse,使用的编程语言是Java。Eclipse是不收费的,为软件设计提供良好的设计环境,也允许使用Java语言进行润建设合计。Eclipse包含了很多设计框架,因此其能够提供多种服务,设计环境中包括多种插件和组件,其组合形式多种多样。Eclipse中具有规范化的collection,能够将插件和组件保存下来,最常见的就是Javadevelopmentkit。Eclipse最早是由加拿大的OptimizationTechnologyInc公司和InternationalBusinessMachinesCorporation公司共同与1994年创建的。Eclipse的基础建设是由InternationalBusinessMachinesCorporation公司负责。经过一段时间的运营,Eclipse项目的参与者越来越多,已经形成了一个联盟,成员公司的数量已经超过了150家。例如当时比较有名的宝蓝公司、赛贝斯公司都参与到Eclipse中。Eclipse是免费的,用户不需要缴纳任何费用就能够获得相关的软件资源,同时可以在原代码上进行改变,设计自己想要的工具。随着使用的人越来越多,几个大型企业关注到这个设计软件并加入到研发中来。Eclipse支持多种语言的使用,可以在多个平台上使用,用户通过简单的操作就能够获得自身想要的语言。Java语言具有平台无关性、多线程技术和安全可靠性等特点。平台无关性是指Java语言适用于多种网络环境中,不会受到计算机和网络的平台的影响。这一特点减轻了工作人员和管理人员的工作压力。多线程技术是指计算机的软硬件同时处理一个或者多个线程的技术。拥有多线程技术能够使计算机在一段时间内处理多个线程,提升了计算机的控制能力。安全可靠性是指相比于c++语言,Java能够避免很多编程错误的发生。Java语言是从c++语言中衍生来的,通常使用与网络应用中。假设Java的安全性较低,那么当计算机之间传递信息资料时,就很容易被网络病毒攻击,造成系统破坏。因此为了保证共享过程不会出现问题,因此Java语言具有较高的安全性。Java语言主要是通过自身的病毒预防机制和保护机制实现安全性的,保护了计算机系统和信息资料的的安全。2.4B/S结构B/S结构中包括两部分,分别是浏览器和服务器,是一种web架构,受到广大使用者的欢迎。浏览器是为用户提供服务的关键部分,大部分软件的功能都需要通过浏览器才能实现。服务器是为用户提供服务对用户进行管理的重要终端,对软件的正常运行以及需求功能的提供具有极大的影响。计算机上安装一个浏览器,服务器上具有能够正常使用的数据库就能够实现软件功能。通过网络,浏览器和服务器就能够进行数据传输和信息互通。B/S是从C/S结构的基础上提出的,由于C/S结构存在一定的问题,所以B/S结构应运而生,随着时间的推移和技术水平的提高,B/S结构越来越丰富,使用者也越来越多。与二层架构的C/S结构不同的是B/S结构具有三层架构,可以说是C/S结构的一种特殊形式。B/S结构中的使用的网络技术越来越多,功能逐步丰富。B/S结构将网络的编程语言、浏览器的脚本、媒体对象技术相结合,为广大的用户提供便利的操作条件,使用任何浏览器都能使软件正常运行,实现其功能,发挥其作用,同时在成本的投入规模上也得到了一定程度的节省。B/S结构的优势就是其操作不会受到浏览器和空间的限制。只要计算机能够连接网络就能够运行软件。用户使用的计算机上也不需要下载多余的软件,也不需要进行维护和检修,节省了很多不必要的时间,系统的拓展也很便利。B/S结构具有维护优化方式简单的特点。B/S结构的软件只需要在服务器上进行维护和检查即可,不需要在客户端进行任何操作。同时B/S结构花费的成本少,选择方向多。只需要在服务器上对软件进行管理即可,这样也提高了数据信息的安全性以及用户计算机系统的安全性。由于B/S结构的软件大部分服务功能都需要服务器的支持,服务器的负荷较大。3.系统需求分析需求分析是指在计算机中新建一个项目或者对现存的项目进行修改以描述新项目。需求分析是系统进入运行阶段之前进行的准备工作,对软件的设计具有十分重要的影响。需求分析的过程就是将目标消费者的需求传达到设计师处,设计师从顾客的需求出发对系统进行设计。只有从顾客的需求出发才能设计出使用的工具,同时也能根据需求的变化对工具进行一定的调整和优化,进而为顾客提供更加优质的服务。需求分析的主要内容就是掌握顾客的需求。需求分析对将会使用软件的主要群体进行调查,从原本的设计基础和运行现状出发,及时总结目标群体的需求变化,结合需求变化趋势对系统进行调整和优化,丰富系统的功能。需求分析中包括多方面的内容,主要有以下几种:(1)效果需要;(2)性能供应(3)能够上市与有保障(4)解决异常(5)衔接的处理(6)限制(7)反方向的处理(8)日后有几率产生的需要。需求分析有以下步骤。首先掌握组织机构实际情况,然后掌握其业务活动,之后收集用户的要求信息,明确系统中需要调整的部分,其次对系统功能和数据进行分析,最后对分析结果进行归纳和总结,完成分析报告。3.1业务需求能够实现对屏幕的随机截取,复制,保存以及添加文字等操作,便于用户对数据的处理。3.2用户需求用户给设计者提出的软件上的需求,是对产品的的要求。3.3性能需求界面清楚明确,操作简单,用户容易掌握截图操作。4.系统设计Physicaldesign是进行软件设计的基础。从用户的需求出发,确定系统的功能,进而明确系统的逻辑需求和性能模型。在满足用户需求以及能够顺利运行的前提下,制定合理的设计方案使本设计能够具体化,能够在计算机中运行。系统设计为软件提供了物理模型。系统设计将软件分成多个层次,将整个系统进行拆分,分析其中的数据库以及各个部分的运行过程和方式。通俗点说,系统设计就是将软件的运行流程展现在用户的眼前,便于用户理解和操作。其中系统设计中包括总体设计、详细设计和具体步骤总体设计就是在每个模块的分界线处作出详细的设计并设计各个小内容内部的上下等级的结构同时设置数据库。详细设计就是对各部分的运行细节进行控制,主要是对算法的编写和构成的信息结构进行控制。演绎法和归纳法是系统设计常用的两种方法。演绎法是一种从普通到特殊的推理方法,换句话说就是从常见的事实和理论出发,根据不同的设计经验和知识水平,对能够满足需求的模块进行挑选,选出符合设计条件的模块,再将这些模块按照一定的组成方式进行组合,完成项目的设计。如果使用归纳法,有以下几点需要注意。首先就是要获取充足的数据资料,尤其是相关性较高的资料。其次,要对收集到的资料进行整理和总结,将资料数据作为基础进行设计和分析,主要是进行需求分析,设计系统的功能。4.1系统的设计目标本系统工具的设计便利了信息的储存形式,不再需要手动输入信息,信息的获取更加准确和便捷。本截图工具具备随即截图、编辑、复制、存储功能。4.2系统功能整体设计 开发的总体设计: 截图:根据提示,随机获取指定屏幕区域; 编辑:在图片上添加文字; 存储:指定存储目录将截图进行存储。 流程图请看下图(1):图(1)程序流程图5.系统设计实现5.1系统主界面实现系统主界面有公共操作区、操作栏、界面布局三部分。操作栏部分代码以及注解:JPanelall=newJPanel();all.add(jp);all.add(buttonJP);通过getContentPane()方法得到窗体最下面那个面板然后往面板上添加控件c然后放到窗体的正中央位置;在窗体南方的位置上添加一个控件。设置控件的尺寸宽500高400设置窗口相对于指定组件的位置。如果组件当前未显示,或者c为null,则此窗口将置于屏幕的中央。设置组件的可见性,如果为true则组件可见设置将该窗体永远在最前端显示用户单击窗口的关闭按钮时程序执行的操作 界面布局注解: JPaneljp=newJPanel(); jp.add(system=newJRadioButton("系统界面",true)); system.addActionListener(this); jp.setBorder(BorderFactory.createTitledBorder("界面风格"));创建面板jp,给jp设置一个标题,标题名称为界面风格,将面板jp设置为系统界面给其添加到动作监听器页面效果代码及注解:publicvoidactionPerformed(ActionEventae){这里写一个动作开始执行的方法,参数是一个动作事件,先声明一个新的变量来获取这个事件源,然后在通过if语句判断动作类型:start执行的是开始截屏动作;cancel执行的是退出操作。elseif(source==cancel){System.exit(0);}如果事件源的值为system,则显示本软件的系统外观,这里需要捕获一下异常。} } 系统的外观如下图(2)所示:图(2)系统外观图5.2系统截图实现设置起点终点横纵坐标,注解请看下面:这里实现的是获取截取屏幕范围起点、终点的横纵坐标,然后将这个范围的边框设置为红色,画出对应截取屏幕的范围。对于纵坐标y,通过三目运算符判断,如果startY小于endY,那么y的值为startY,否则为endY。选择区域的变量设置为select,创建一个新的矩形框对象,他的宽是起点的横坐标减去终点的横坐标的绝对值;他的高是起点的纵坐标减去终点的纵坐标的绝对值。设置八点的位置,注解请看下面:设置八个点的位置,先创建一个坐标对象,设置他的起始点和终点,起点就是x,y两个参数减去5个像素点,终点的位置在(10,10);第二个点同上边的第一个点;然后是第三个点的位置,判断起点的横坐标是否大于终点的横坐标,如果结果为true,则起始点横坐标为startX,否则为EndX;终点的坐标依然是(10,10);依次往后的点都如同第三个点.运行这个软件的效果:通过if语句来判断代码是否开始执行,在这里调用前边写的方法,设置截图区域待确认状态下是青色,fillrect该函数用指定的画刷填充矩形,然后在设置截图边框颜色为红色,设置drawRect,将需要截图的矩形框坐标参数传入其中,设置他的颜色为黑色,然后设置drawString方法,在截图的时候输出一些提示用户的信息。具体的截图效果如图(3)所示。图(3)八点及边线展示图 定义鼠标移动是为了确定截屏的区域范围和区域代码。创建带参数的私有的无返回值的方法doMouseMoved,进行鼠标移动勾选电脑屏幕的指定区域,在该方法中,如果所选的内容包括了me参数所获得的点的坐标,那么就将创建一个新的对象Cursor,并将该对象的值设定为MOVE_COURSOR,并将current的属性值移动。如果不包括me,那么就将Status的值存入到一个数组中,进行循环,通过for循环,循环条件是声明一个局部的整型变量将i小于他的长度,i需要在一次执行结束进行自加一,再在循环里进行判断,如果它与me获得的值相同,那么将数组对应值传入到current在将此值设置到cursor里,在判断语句里写上return,若果满足则结束方法。循环结束后再将设置cursor,并将current的值设置为默认的。移动鼠标获取鼠标所在的位置。以下为这一操作的解释。//通过八个方向(上北下南左西右东)决定x坐标与y坐标,并将它们进行刷新值创建带参数的无返回值类型的initSelect方法,参数为state,即:privatevoidinitSelect(Statesstate){使用判断语句switch/case的判断方式进行多次判断,如果state状态为默认状态,那么将x坐标设置为0,y坐标设置为0,用break进行结束case; switch(state){ caseDEFAULT: currentX=0;currentY=0;break; 同理:对于不同的state将X,Y坐标进行设置;若果state状态设置为东(EAST),那么将x坐标设置为三目运算并进行判断,如果x结束时的坐标大于x开始的坐标,就输出结束时的x坐标,反之就输出x开始时的坐标,y坐标设置为0,用break结束case;即:currentX=(endX>startX?END_X:START_X); currentY=0;break;若果state状态设置为西(WEST),那么将x坐标设置为三目运算并进行判断,如果x结束时的坐标大于x开始的坐标,就输出开始时的x坐标,反之就输出x结束时的坐标,y坐标设置为0,用break结束case;若果state状态设置为北(NORTH),那么将y坐标设置为三目运算并进行判断,如果y结束时的坐标小于y开始的坐标,就输出开始时的y坐标,反之就输出y结束时的坐标,x坐标设置为0,用break结束case;若果state状态设置为南(SOUTH),那么将y坐标设置为三目运算并进行判断,如果y结束时的坐标小于y开始的坐标,就输出结束时的y坐标,反之就输出y开始时的坐标,x坐标设置为0,用break结束case;若果state状态设置为东北(NORTH_EAST),那么将y坐标设置为三目运算并进行判断,如果y结束时的坐标小于y开始的坐标,就输出结束时的y坐标,反之就输出y开始时的坐标,x坐标设置为三目运算并进行判断,如果x结束时的坐大于x开始的坐标,就输出开始时的y坐标,反之输出结束时的y坐标,用break结束case;若果state状态设置为西北(NORTH_WEST),那么将y坐标设置为三目运算并进行判断,如果y结束时的坐标小于y开始的坐标,就输出开始时的y坐标,反之就输出y结束时的坐标,x坐标设置为三目运算并进行判断,如果x结束时的坐大于x开始的坐标,就输出开始时的x坐标,反之输出结束时的x坐标,用break结束case;若果state状态设置为东南(SOUTH_EAST),那么将y坐标设置为三目运算并进行判断,如果y结束时的坐标小于y开始的坐标,就输出结束时的y坐标,反之就输出y开始时的坐标,x坐标设置为三目运算并进行判断,如果x结束时的坐大于x开始的坐标,就输出结束时的x坐标,反之输出开始时的x坐标,用break结束case;若果state状态设置为西南(SOUTH_WEST),那么将y坐标设置为三目运算并进行判断,如果y结束时的坐标小于y开始的坐标,就输出结束时的y坐标,反之就输出y开始时的坐标,x坐标设置为三目运算并进行判断,如果x结束时的坐大于x开始的坐标,就输出开始时的x坐标,反之输出结束时的x坐标,用break结束case;当不属于以上情况时,将x的坐标设置为0,y坐标设置为0。} 在窗口显示所截图片注解:创建一个类Temp并且继承面板类最后实现鼠标监听接口: privateclassTempextendsJPanelimplementsMouseListener,MouseMotionListener在该类中声明几个对象,即: 私有的缓冲图片类型bi,即:privateBufferedImagebi; 私有的整型宽度以及长度,即:privateintwidth,height; 私有的整型x的起始坐标,y的起始坐标,x的结束坐标,y的结束坐标,以及临时的x坐标,y坐标,即:privateintstartX,startY,endX,endY,tempX,tempY; 私有的面板jf,即:privateJFramejf; 私有的矩形select并初始化为0,即:privateRectangleselect=newRectangle(0,0,0,0); 私有的cursor类型的cs,即: privateCursorcs=newCursor(Cursor.CROSSHAIR_CURSOR); 私有的状态current并设置为默认值,即:privateStatescurrent=States.DEFAULT; 私有的矩形数组,即:privateRectangle[]rec; 公有的的静态常量x的开始坐标,即:publicstaticfinalintSTART_X=1; 公有的的静态常量x的结束坐标,即:publicstaticfinalintSTART_Y=2; 公有的的静态常量y的开始坐标,即:publicstaticfinalintEND_X=3; 公有的的静态常量y的结束坐标,即:publicstaticfinalintEND_Y=4;privatePointp=newPoint();privatebooleanshowTip=true;创建公有的有参的Temp构造函数(参数为面板jf,缓冲图片bi,以及图片的长度,图片的宽度),即:publicTemp(JFramejf,BufferedImagebi,intwidth,intheight){ 函数体将jf赋值给Temp的jf, bi赋值给Temp的bi, 宽度赋值给Temp的宽度, 高度赋值给Temp的高度, 在将鼠标监听器加到Temp上, 调用方法initRecs();} 创建私有的无参无返回值类型的方法initRecs,方法体里创建新的矩形对象,for循环生成矩形的八点坐标;即:privatevoidinitRecs() 创建公有的带参数的无返回值类型的方法paintComponent,方法体里进行划线,指定画线的起始以及终点坐标,即:publicvoidpaintComponent(Graphicsg) 并将线设置成红色, 划线x的起始坐标,y的起始坐标,x的终止坐标,y的起始坐标, 画第二条线x的起始坐标,y的结束坐标,x的终止坐标,y的终止坐标, 画第三条线x的起始坐标,y的起始坐标,x的起始坐标,y的终止坐标, 画第四条线x的结束坐标,y的起始坐标,x的终止坐标,y的终止坐标, 并将x坐标重新进行赋值,若x的起始坐标小于x的终止坐标,x值为x的起始坐标,反之为x的结束坐标, 并将y坐标重新进行赋值,若y的起始坐标小于y的终止坐标,y值为y的起始坐标,反之为y的结束坐标, 将新的矩形对象设置为(x,y,起始与终止的x坐标差的绝对值,起始与终止的y坐标差的绝对值), 设置x1的值为起始与终止坐标和的一半,设置y1的值为起始与终止坐标和的一半,将其设置为:并且以矩形框设置第一个点的像素点(x-5,y-5,10,10); 以矩形框设置第二个点的像素点(x1-5,y-5,10,10); 以矩形框设置第三个点的像素点((startX>;endX?startX:endX)-5,y-5,10,10); 以矩形框设置第四个点的像素点((startX>;endX?startX:endX)-5,y1-5,10,10);以矩形框设置第五个点的像素点((startX>;endX?startX:endX)-5,(startY>;endY?startY:endY)-5,10,10); 以矩形框设置第六个点的像素点(x1-5,(startY>;endY?startY:endY)-5,10,10); 以矩形框设置第七个点的像素点(x-5,(startY>;endY?startY:endY)-5,10,10); 以矩形框设置第八个点的像素点(x-5,y1-5,10,10);并将颜色设置为青色,再次将其设置为(p.x,p.y,170,20);设置颜色为红色,画框(p.x,p.y,170,20);设置颜色为黑色,在(p.x,p.y+15)写下内容“按住鼠标即可选择截图范围”。图片获取成功就会在多层菜单栏中显示出来。图片下方显示可以对图片进行的操作,分别是存储、复制到剪切板、编辑和关闭,如图(4)所显示。图(4)成功截图展示图操作栏四个按钮的设置,注解请看下面:声明一个私有的返回值为空的方法initPanel(),方法里声明四个按钮:“保存”、“复制到剪切板”、“关闭”、“编辑”。将他们分别赋值给四个变量使用:save、copy、close、update。然后分别将他们的菜单选项热键设置为:s、c、x、u声明一个新的Jpanel类型的变量buttonPanel,将上边四个按钮添进去,然后分别给四个变量添加四个动作监听器。 声明一个返回值为空的带动作事件参数的方法,是个动作监听的方法。 在创建一个新的Object类型的变量source用于接收事件源。 再通过if语句比对,来判断系统改做出设么样的动作: save调用对应的存储模块; copy调用对应的拷贝模块; close则调用关闭模块。5.3截图的编辑实现要想对截图进行编辑,在图片上面编辑文字时,鼠标左键点击“编辑”,出现操作提示窗,先将图片保存,再编辑文字。主界面设置代码及注解:定义了一个私有的获取截图方法,并且声明一个截图对象,然后把他放到保存之后进行编辑(如:添加文字)panel.setBorder(newTitledBorder(border,"设置",Font.LAYOUT_LEFT_TO_RIGHT,Font.LAYOUT_LEFT_TO_RIGHT,font));里面运用一个布局管理器,部件如果想加入其中需要借助GridBagConstraints,利用组件的横纵坐标,并设置了组件所占行列数,也就是截图的宽度,还有截图的高度,当组件在其格内而不能撑满其格时,通过fill的值来设定填充方式,用户通过滑动滑块,查看截图的各个部分。同时也可以利用拖拽的方式,调整音量和背景亮度等,可以在代码中生成对应的输出口。部分按钮设置相关代码:} 界面以及按钮的展示图如下图(5):图(5)添加文字界面 通过调用父类的绘制事件,并重写父类的绘制函数,调用了父类的相应方法,并且父类的方法中还有可能包含一些默认操作,因为有些操作是必须的,绘制的时候并且,进行了非空判断,对于绘制的要求 预览效果展示图(6):图(6)预览添加文字5.4截图的存储实现 图片截取成功之后,鼠标左键点击“复制到剪切板”,出现“已复制到剪切板”的信息提示,点击“确认”按钮,即可完成复制操作。 请看下述代码及注解: 定义此信息框对于用户操作的一个判断这个方法的参数,在对于复制截图到剪切板中的时候,如果图片为空的话,就提示用户为空,否则就成功复制到剪切板。并添加了捕获异常的控件,如果出现错误,就提示用户说复制到系统粘贴板出错,控件消失。,"复制到系统粘帖板出错!!","错误",JOptionPane.ERROR_MESSAGE);}}Transferable是一个用于不同存储介质间数据传输的接口,必须通过此接口才能实现两个存储介质间的数据传输,此接口还封装了数据传输过程的具体方式。主要的方法有:(1)ObjectgetTransferData(DataFlavorflavor)返回一个Transferable数据传输对象,参数则用来指定数据传输过程中的数据传输格式;(2)DataFlavor[]getTransferDataFlavors()用来返回一个DataFlavor数组;(3)BooleanisDataFlavorSupported(DataFlavorflavor)判断当前用来传输数据的Transferable对象的数据传输格式是否符合DataFlavor对象中的几种格式(stringFlavor,imageFlavor,plainTextFlavor)Transferable对象是用来传输数据的,DataFlavor则封装于该对象中用来指定该对象传输数据时的数据的格式展示图请看下图(7):图(7)将截图保存到剪切板使用word测试图片是否成功复制到剪切板,如图(8)所示。 图(8)出现“已复制到剪切板”的信息,表示该模块的功能已经实现。截取图片成功之后,鼠标左键点击“存储”,进行图片的存储,这是会出现图片存储位置的选择信息,图片的保存格式也可以进行选择。请看下述注解:定义了一个保存方法,并在方法中进行异常的捕获,开头的时候进行了保存图片的获得判断,如果它没有读到图片信息的话,就提示用户图片不能为空,否则就跳出这个方法,然后引入了保存不同类型,不同格式的图片,并一一进行了引入,传人了this这个状态信息,,并设置了格式过滤器,如果是静态的图片就选择相对应的保存格式,这些格式的判断方法在代码中已经一一进行了判断,保存格式有jpeg,png,bmp,如果是动态的图片,就需要就需要保存为gif的格式,并且如果再运行过程中,如果抓到异常,要在控制台打印错误信息!!其中需要设置格式过滤器,选择所需要的格式:这是向用户可选择的文件过滤器列表添加一个过滤器,如果应该保存该文件就返回true,否则返回false,用户点击保存按钮的时候,由继承了这个过滤器类上门的UI调用此方法,但要确保指定的文件是可见的,不是隐藏的,并要通知对此事件感兴趣的所有侦听器,最后返回一个bmp对象,给用户一个反馈.这是通过继承filechooser类来让用户最终确定保存的格式,给用户提供了一种简单的机制,并返回用户保存路径,通过用户选择的保存格式,通过它相对应的过滤器,如保存GIG格式的过滤器privateclassGIFfilter并且写了一个暂时类,来显示当前的屏幕图像,TEMP,引证了过滤器的判断,最终实现jpeg,bmp,png,和动态图片gif,的保存。展示图请看下面图(9):图(9) 截图保存过程图 点击保存后,进入到目录下进行查看,查看是否保存成功。图(9)查看已保存的截图 经查看已经成功存储6.系统测试系统测试,即整合起来众多的元素展开测试,测试他们集合在一起能否正常运行,这些内容包括各种方面种种信息,比如,系统软件和应用软件、电脑硬件、外接鼠标键盘等硬件、Internet等。系统测试将会对整个系统进行测试,主要是为了测试系统能否满足目标需求,并从中发现漏洞和不足之处,进而针对性的进行优化和改进。6.1截图软件系统测试 系统测试的目的是对该软件的功能进行检测,是否能够实现需求功能。分别进行截图保存的测试,复制的测试,编辑(添加文字)的测试。6.1.1保存选项测试图片截取之后,出现“成功存储”,则表示图片已经储存,同时需要对图片进行命名,如果不命名就不完成储存;如果存储失败将会出现“未能成功储存”的提示信息。图(10)截图保存 图(11)成功保存经运行测试,证明保存截图功能没有问题,已经成功实现。6.1.2复制到剪切板选项测试在图片已经截取之后,出现“成功存储”,则为已经复制到剪切板;出现“未能复制到剪切板”,则为失败。图(12) 复制到剪切板图(13)复制到剪切板成功经过运行测试,证明复制到剪切板功能没有问题,已经成功实现。6.1.3编辑选项测试在图片上添加文字。如果文字在图片上面显示,则为编辑成功,否则编辑功能未能实现。图(14)添加文字成功经过运行测试,证明添加文字功能没有问题,已经成功实现。6.2测试评价测试结果显示,需求功能已经满足使用的需要,能够进行截图、存储和编辑等操作。但是功能还不够全面,同时,外观还不够美化,以上两方面还需要进行优化和完善,以为用户提供更加优质的服务。现阶段的测试结果表明,本截图工具中没有严重的漏洞。结论在诸多朋友和老师的帮助之下,终于完成了这个截图工具的设计和制作,在此过程中,我将软件工程的相关理论和技术作为基础,制定设计和制作计划,一步一步的按照计划完成,严格根据整体的制作计划执行。虽然最终完成了这一工具的设计和调试,但是在过程中我还是出现很多错误,我发现自己对开发工具相关理论和工具的掌握程度还有待提升,有很大一部分时间的设计效率不高,将宝贵的时间浪费了,同时在系统扩充时,也出现了问题。我需要继续提升自身的专业水平,学习多方面的专业知识,为未来进行更好的设计做准备。在这次的毕业设计的过程中,我发现自己还有很多的不足,但是毕业设计的成功完成也提升了我的信心。未来,我还有很大的上升空间,继续坚持,继续努力。参考文献\h程新党;\h程强;\h黄河涛.基于Windows图形驱动的屏幕截图技术(2005年12期)\h魏威.利用C#和GDI+制作屏幕截图小软件.图形图像处理(2013年23期)张之.QQ屏幕截图的秘密.CFan加油站(2007年1

温馨提示

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

评论

0/150

提交评论