- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第6章仿Windows画图
6.1画图软件概述
我们平时所使用的图形处理工具有PhotoShop、Windows画图工具等,其中PhotoShop是一款非常强大的图形处理工具,Windows画图工具那么是一款较为简单的画图工具,功能较为简单,相信经常使用Windows系统的读者都比拟熟悉,是一种比拟简单与具有代表性的画图工具,虽然功能不够强大,但具有大多图片处理程序所必需的根本功能:铅笔画图、各种数学函数图形、填色、取色、橡皮擦等等功能。
本文将使用Java语言去实现Windows的大局部功能,包括取色、各种数学函数图形、橡皮擦、喷枪、颜色编辑等功能,除了这些绘图功能,还会实现翻开图片、保存图片等文件操作功能。画图工具的最终效果如图6.1所示。
图6.1画图
6.2画图工具原理
我们可以考虑一下如何使用Java程序去实现这些功能,如果需要进行画图,那么我们当然就需要Graphics类来向界面画上相应的内容,如果需要进行文件操作,我们可以使用Java的IO来实现。
6.2.1
在Graphics中许多方法,其中有一个drawLine的方法,使用该方法我们可以将线画到界面中,该方法中有四个参数,分别是线的开始点坐标〔x、y〕与线的结束点的坐标〔x、y〕,因此,如果需要调用该方法来画线的话,需要捕获用户在界面中按下鼠标的点坐标与放开鼠标时的点坐标。当调用了drawLine方法后,我们再对界面的组件进行一次repaint就可以实现画线的功能。
6.2.2其他画图
画线我们可以调用drawLine方法,那么画椭圆的话可以调用Graphics类的drawOval方法,如果需要画矩形的话,可以调用drawRect方法。如果需要实现橡皮擦的功能,可以将鼠标经过的区域画上白色的线。实现喷涂的功能,可以在当前鼠标点击的区域中画上相应的点,Graphics类中提供了一个fillRect的方法,我们可以利用该方法去填充当前的区域。除这些画图功能外,我们还需要提供一个刷子的功能,刷子功能可以看作是一个画笔功能,只是使用刷子画出来的线比画笔更粗而已。
6.2.3
我们可以在画图的界面中保存一个BufferedImage的对象,那么可以通过这个对象得到一个Graphics对象,得到该对象,就可以使用它的drawXXX的方法来进行画图,到最终需要进行保存的时候,我们可以将这个BufferedImage对象通过ImageIO的writer方法写到文件中。
只要知道使用Java程序来实现画图的原理,实现程序就十分的简单,关键是如何计算各个工具的有效范围。
6.3创立画图工具的各个对象
使用Windows的画图软件,发现在编辑图片的时候,有个相似的过程,首先是用鼠标选择需要使用的工具,然后就在画板中用鼠标进行拖动、点击等动作,画板会显示出相应工具的所产生的效果,所以在这里设计一个命名为Tool的接口,这个接口是所有工具的接口,里面定义了一系列的鼠标动作。实际上在这个画图工具中,所有的工具都必须遵守一定的标准,即使用鼠标进行拖动、点击等动作,当需要定义某些标准的时候,我们可以将这些标准写到一个接口中,那么这个接口所有的实现类都要遵守这个标准,这也是本章将工具作为一个接口的原因。
在本章中,画图软件的主界面使用ImageFrame,该类继承于JFrame,该类会初始化画图软件的各种组件。由于我们有选择翻开图片文件的操作,所以会有一个扩展类〔为选择文件提供一种简单的窗口选择机制〕的ImageFileChooser类,用于处理选择文件时的过滤等操作。
因为绘图的功能已经全部由Tool的实现类去实现,所以除了绘图外的其它功能的逻辑实现,就全部放到ImageService类中,本章中的类图如图6.2所示。
图6.2画图软件类图
6.
从图6.2中可以看到,工具接口Tool定义了鼠标动作的四个方法,分别是拖动mouseDrapped()、移动mouseMoved()、松开mouseReleased()、按下mousePressed()、点击mouseClicked()五个动作,并用String类型的常量属性来定义工具的类型。这个接口只有一个实现类AbstractTool,而每个工具类都是去扩展AbstractTool类,在图中表现为Tool1、Tool2…….ToolN。以下是此接口定义的属性与方法:
staticfinalStringARROW_TOOL,箭头工具类型。
staticfinalStringPENCIL_TOOL,铅笔工具类型。
staticfinalStringBRUSH_TOOL,刷子工具类型。
staticfinalStringCUT_TOOL,剪切工具类型。
staticfinalStringERASER_TOOL
您可能关注的文档
最近下载
- 小学数学新青岛版三年级上册第五单元第1课时 整十、整百数乘一位数的口算教学课件(2025秋新版).pptx VIP
- 中医药技能大赛考试复习题及含答案.doc VIP
- 精益安全生产管理PPT.ppt VIP
- 3.5 曹冲称象的故事(课件)2025-2026学年度人教版数学三年级上册.pptx VIP
- 金风1.5MW风机机舱柜识别图.pdf VIP
- SN/T 1299-2003_入出境航空器器械除鼠操作规程.pdf VIP
- 《中考英语备考讲座》课件.ppt VIP
- Q NE-DA01.1-2020 《陆上风电、光伏建设项目质量验收范围划分》.xlsx VIP
- 智能电网中的电力市场机制研究.pptx
- 二年级数学上册《认识厘米》教案.docx VIP
文档评论(0)