Java自制绘图软件
引言
- 在大连时接触了Java,Java非常优雅,我非常喜欢。期末老师要做一个项目作品,看着windows自带的画图软件,我决定自己动手做一个绘图软件。
- 经过无数次界面调试,刷新层叠关系令我爆肝了一个月,最终完成了这个2400行代码的绘图软件。Java语言是很优雅和工整的,本项目分层脉络也很清晰,因此不对此项目过多阐述。
- 绘图软件名为爱绘,本文介绍中将展示爱绘的功能,工程项目中附带我GtiHub爱绘项目地址,欢迎大家交流。
一、介绍
- 我将从开始界面、绘图界面、设置界面展现爱绘的功能。
1.1 开始界面
- 开始界面包含软件名爱绘、界面跳转按钮(绘图、文档、设置、关于)、菜单栏(文件、选项、编辑、帮助)。
- 菜单栏将一直存在于各个界面,绘图界面主要用于用户的创作工作,文档界面包含爱绘的使用说明,设置界面包含爱绘主题、调色板、绘图撤销的设定,关于界面是爱绘的开发信息。
1.2 绘图界面
- 绘图界面如下所示,当进入绘图界面时用户的鼠标光标将会被替换为画笔,按住鼠标即可在画布上进行绘画。
插入图片与绘图保存
绘图界面如下图所示,右侧是我画的蒙娜丽莎,看起来生动形象、惟妙惟肖,这与爱绘的强大绘画能力密不可分。
在绘图界面右键点击插入图片,插入蒙娜丽莎原画进行对比:
看起来差不多,点击文件-保存,即可将美丽的画作保存为本地图片。
图层替换和可见性
如果你还想进行创作可以添加图层,图层1是默认图层固定可见,其他图层可以设置可见性。点击图层2和图层1的替换按钮将两个图层替换,使得我们的美丽画作移动到图层2上,再设置图层2不可见。
替换图层并设置图层的可见性后效果如下:
绘图功能
- 右键点击颜色选择器,可以在颜色选择器中选择画笔的颜色
- 爱绘支持撤销和重做功能,我们可以按ALE+E撤销刚才插入的图片。当绘图时,我们可以在设置界面设置单次撤销数目,以支持一次撤销多次操作。
1.3 设置界面
软件主题
- 点击主界面设置或菜单栏-选项-设置,跳转到设置界面(您的画作不会因此消失),设置界面如下所设:
- 点击皮肤选择爱绘的主题颜色为蓝色,换肤后效果如下:
调色板
- 点击设置界面-调色板可切换调色板为三原色调色板
- 将鼠标放置于三原色其中之一的区域,通过滚轮即可调整对应原色值,三原色交汇处显示的是最终合成的颜色。
最佳布局
- 点击设置界面-最佳布局,会弹出调整最佳布局的窗口:
- 拉伸并移动最佳布局窗口为最佳后关闭最佳布局窗口即可:
- 点击选项-设为最佳布局,即可将窗口移动到最佳布局位置并且大小为最佳布局大小。
1.4 更多功能
- 爱绘还有许多功能尚未展示,包括鼠标显示为绘笔、橡皮擦功能、图形插值功能、PS图片、帮助文档等。
- 如果您想探索更多,请直接访问GitHub上的工程地址。
二、工程项目
2.1 项目层次
- 爱绘的整体项目图如下所示:
- gui中包含了UI界面类,instrument中包含了许多功能类比如将屏幕上的内容输出到图片中的功能,resource中包含了许多项目资源图片比如画笔和橡皮擦的图片,software中包含了main函数。本项目实际未使用到mysql数据库。
- gui中包含如下内:
- 其中dilogP代表调色板、选择图片文件等弹窗,drawTool代表绘制需要的工具如画笔或橡皮,elementp代表绘图的基本图片和可以插入的图形形状,panelp代表各个界面面板,windowp中包含了主界面类。
- 阅读源码建议从windowp开始看起,主面板上组装了各种各样的面板组件。可以通过修改dilogP来修改弹窗面板组件,可以修改drawTool来支持更多的绘画操作工具,可以通过修改elementp来支持更多的图形操作,可以通过panelp来调整各个面板的内容。
2.2 项目源代码
- GitHub上的项目地址如下,可以直接访问GitHub网站下载工程代码。
- 附上GitHub工程地址,拿走时请给博主点个关注哦!
- 爱绘项目GitHub网站地址
Java自制绘图软件相关推荐
- java 2d绘图 stroke_Java标准教程:Java 2D绘图--第4章使用Text
Java标准教程:Java 2D绘图--第4章使用Text 本节介绍文本API的用法,以及他们的渲染能力.至今为止,您已经有了基本的Java 2D文本API,同时知道如何设置字体和位置,以及绘制文本. ...
- 几何绘图软件哪个好?
几何绘图软件哪个好? 数形结合是一种极富数学特点的信息转换的教学方法,许多数量关系方面的抽象概念和解析式,若借助于任何一种几何绘图软件都会使一些关系明朗化.简单化.动态几何绘图软件的研究始于二十世纪八 ...
- 「首席架构师精选」精选绘图软件
绘图和绘图程序与图形用户界面,旨在产生公开准备的2D和3D绘图.此外,它还可以用作绘图模块. 图是一种表示数据集的图形技术,通常表示两个或多个变量之间的关系.绘图可以用手工绘制,也可以用机械或电子绘图 ...
- 漫画绘图软件MediBang Paint Pro 27.2中文版
MediBang Paint Pro中文版是一款免费的数字绘画和漫画创作软件,即便是免费的MediBangPaint也可以使用云端功能,免费使用丰富素材,知名字体,多彩笔刷,操作轻便,简洁. 多样笔刷 ...
- GeoGebra-一个功能类似于几何画板的开源绘图软件
GeoGebra-一个功能类似于几何画板的开源绘图软件 绘图功能比几何画板要强大很多:可以绘制几何图形及函数图像,可以做如微分和积分等计算.同时支持图形界面操作和命令操作. GeoGebra可以输出成 ...
- 用JAVA编制电子白板软件
用JAVA编制电子白板软件 用JAVA编制电子白板软件 ----随着 Internet的迅速发展,在Email.WWW.FTP等传统的非实时应用日趋成熟的同时,广大网络用户对在线实时交流的需求不断扩大 ...
- java培训分享:学习Java需要什么软件
在参加java培训过程中学习java技术,需要用到很多辅助工具,这些辅助工具是具有多功能性和实用性的,从代码构建到bug压缩.学习这些工具可以帮助您提高代码的质量,并成为一个更高效的Java开发人员. ...
- 论文中的绘图软件大总结 ---自己感想:当你拼命寻找向上的扶梯时,但也要先不让自己恐高
原文链接: 这些论文绘图软件,你一个都不会用_搜狐科技_搜狐网 https://www.sohu.com/a/217638052_556897 引言 众所周知,高水平的配图可以令论文.报告等显得耳目一 ...
- CAD绘图软件中如何查询图纸的版本是多少
在CAD中,我们不光自己要绘制图纸,还需要查收你的同事发来的CAD图纸文件.那么,在查看图纸的时候怎么知道图纸的版本是多少呢?具体要怎么来进行操作呢?那下面小编就来教教大家在CAD绘图软件中如何查询图 ...
最新文章
- TermCriteria模板类
- activex for chrome扩展程序 下载”_提升前端开发效率:你应该知道的10个Chrome扩展程序...
- 腾讯云安装mysql本地主机名,腾讯云服务器上安装mysql,并用navicat连接
- 用c语言实现0到59的数码管,跪求单片机0~99数码管显示用C语言编写的程序
- inner join 和 exists 效率_19 个让 MySQL 效率提高 3 倍的 SQL 优化技巧
- ES5(二)——替换this 之call()、apply()和bind()
- 微信第三方登录测试时报Scope参数错误或没有Scope权限解决方法
- 九度 题目1394:五连击数组
- 躲避校园网认证客户端的检测,开启笔记本热点的方法!
- Cocos 环境搭建 流程~~~~~
- Rancher 使用 NFS Storage Classes 进行动态 NFS 存储
- 图形学创世纪:当科学照进影视与生活
- python依次输入输出字符串_Python练习:输入一个字符串并输出该字符串中所有字符的组合,python...
- BAT大佬带你了解“渠道”
- Machine Learning Basics
- 通过注册表更改Windows网络类型(公共网络、专用网络或家庭网络);
- 【信息系统项目管理师】第二十三章 信息系统综合测试与管理(考点汇总篇)
- JsonParser、JsonParserFactory、JsonLocation源码翻译
- 随机森林算法的Python实现
- 天才假象:从刻意练习、心理策略到认知陷阱
热门文章
- H5页面与app的交互(jsBridge)和小程序的交互(weixin-js-sdk)
- 解决Linux服务器Debian9.9执行source命令不生效问题
- app透明/沉浸状态栏的实现方案
- 华为nova6刷鸿蒙,华为Nova6 5G将是首款支持鸿蒙2.0升级的机型
- 自然语言处理5 -- 词向量
- 概率分布 ---- beta分布
- 天猫小精灵是阿里唯一AI?即将推出的第二款智能产品才是重头戏!
- excel@表格斜线和内容填充@单元格大小调整
- android调用相机拍照返回的照片大小太小,变得模糊
- LFU缓存算法及Java实现