我们想用Java语言来写出一个画板,首先要分析这个画板都是有哪些
部分构成的,分完大的部分,再去添加细小的部分。现在做的是仿XP
的画板,我做了两次,第一次的那个到颜色画板的时候失败了,原因
是我只用了三个类,真的是无法满足需求,越做越乱,突然意识到熊
哥说的重要性。类少的话,做一个非常简易的画板还是很成功的,可
以很容易的实现各个功能。
XP的画板,一个主窗体,一个菜单栏,一个放置功能按钮的面板,一
个放置颜色的面板,还有一个画图区域的面板,这个其实也算是仿XP
的简易画板,如果真的做出XP的画板,面板绝对不仅仅这几个。
做这个画板,总共定义了五个类,根据刚才说的画板的那几个结构定
义。
先说画板的主窗体类,继承自JFrame类,在这个类里究竟要做些什么
,写哪些代码?当然,主函数是少不了的,初始化窗体,接着再把刚
才说的那些面板加上去,这种情况前面用的是边界布局。还要用一个
二维数组把菜单子项添加到菜单栏上,最重要的是最后面这个,要想
在画图面板上画出东西,必须要有监听器,两个监听器,一个是鼠标
监听器,一个是鼠标移动监听器。我记得当时为这个监听器监听在哪
里这个问题纠结半天,现在想想真傻,既然要在面板上画东西,必须
要在面板上加啊。
然后是画图区域的面板,继承自JPanel类,初始化面板,获取画布对
象,获取之后才可以在这上面进行操作的,接着就是设置颜色、大小
等,这部分没什么问题。
接着,就是工具面板,前面的步骤很类似,出现一个小问题的就是把
工具的图片导入的时候花了很久,因为路径总有问题,但后来把他们
和src放在同等位置,终于可以实现了。
颜色画板,设置前景色,背景色,其实一开始很苦恼的,后来才发现
其实这些东西就是把自己的想法让计算机明白而已,你直接说我想获
取前景色,计算机是不会明白的,当然这里面有一个鼠标按下时的时
间处理方法,也就是说返回值是1,代表左键,为3,代表右键,这样
计算机就明白了。接着就是添加更多的颜色,数组,数组真的是节省
了很多代码。
其实上面的这四个类现在看来刚开始接触时那么费解了,最后是写各
个工具的方法,这个在我看来,是花时间最多的,但也是最让自己有
些小小的成就感的一个类。别的不说,就说鼠标释放时执行的事件方
法,获取坐标和设置颜色先要写好,直线,矩形,圆角矩形,圆,这
些都有特定的方法,但是在画圆角矩形,矩形,圆之前要写几句代码
int a,b;
a=x1<x2?x1:x2;
b=y1<y2?y1:y2;
就是这个,这样就不会圆和矩形都在一个方向,而不能画反方向的了
。
接着是刷子,橡皮擦,铅笔,喷枪:
这些都是类似的,所以说照葫芦画瓢,但照葫芦画瓢也得考虑这些到
底有哪些相同和不同之处,相同之处容易办,不同之处我们要如何处
理,就拿刷子和橡皮擦,铅笔来说,刷子和铅笔的粗细不同,但其他
都是一样的,刷子和橡皮来说,刷子可以有很多种颜色,但橡皮只能
用白色,所以说这样问题就简单了。实现这三个的时候要用到
Graphics2D,因为只有在这个里才有设置线条样式的那个
类,BasicStroke,从而设置粗细。我觉得最神奇的是,直线,两点确
定一条直线,但是刷子怎么办,可以把它理解为由无数细小的直线组
成,用画直线的方法即可,并且把末点的坐标赋给起点,这样重合就
变成点了。还有一点注意,就是在写完这些之后,再把它们的粗细调
回最开始的,这样就不会用完刷子,再用直线,直线和刷子一个粗细
了。至于喷枪,它是点的集合,所以我们要用到随机数,至于多少个
点我们可以自己订,用循环控制。
保存的问题,等重绘弄明白,在重绘那里再写,画板先就这些,以后
必定还要补充。
分享到:
相关推荐
这篇博客的文章链接虽然无法直接查看,但从标题我们可以推测它可能是关于Java Canvas的使用经验和技巧的总结。 首先,Java中的Canvas类是一个非常基础的绘图接口,它没有内置的绘图功能,需要开发者自行实现。你...
Protel99SE是一款经典且广泛使用的电子设计自动化(EDA)软件,主要用于电路原理图设计和PCB(印制电路板)布局布线。本文将深入解析protel99SE画板的简明流程...希望这份简明总结能为你的PCB设计之路提供有力的支持。
在给定的"简单画板开发总结"中,虽然具体使用的编程语言和库未明确指出,但我们可以假设它涉及到的是基本的绘图API的使用。 1. **绘图API**:无论是哪种语言,绘图API都是画板的核心。例如,HTML5的Canvas API提供...
【标题】:“画板保存总结”涉及的知识点主要围绕图形绘制、事件监听和文件操作,这些是计算机图形学和Java编程中的基础概念。 【描述】虽然没有提供具体的内容,但根据“画板保存总结”这一标题,我们可以推测这篇...
总结来说,"几何画板加自定义工具包.zip"不仅提供了一个基础的几何画板试用环境,更赠送了一份海量的自定义工具集,使得数学教学和学习变得更加生动有趣。无论是初学者还是经验丰富的用户,都能从中找到适合自己的...
### 高频PCB板设计心得总结 #### 一、前言 随着电子产品向着更高频率、更高性能的方向发展,高频PCB(Printed Circuit Board,印制电路板)设计成为了电子产品研发过程中的关键技术之一。良好的高频PCB设计不仅...
在本文中,我们将深入探讨如何使用...总结起来,Java实现的画板程序涉及到GUI设计、图形绘制、事件处理、文件操作等多个核心Java技术。通过学习和实践这个项目,开发者可以加深对Java Swing的理解,提升GUI编程能力。
总结来说,"opencv画板功能实现源程序"项目通过OpenCV提供的图形绘制函数和鼠标事件处理,实现了让用户在交互式窗口上自由绘画的功能。项目中可能涉及多个Python模块,每个模块负责不同的功能,如主程序控制、画板...
总结,画板Demo例子主要展示了如何在HTML5环境中使用画板API进行图形绘制。通过理解并实践这些基本操作,开发者可以创建出丰富多样的网页图形效果和应用程序。在压缩包`jihehuabao5.06`中,可能包含了实现这些示例的...
总结来说,玲珑画板6.045版是一款轻量级但功能强大的数学作图工具,它的出现为数学教育领域提供了新的可能性。无论是教学还是自学者,都可以从中受益,通过直观的图形化方式加深对数学的理解,提升学习效率。所以,...
总结而言,“几何画板文件打包机(GSP转EXE)”是一项具有革命性的发明。它不仅解决了教学资源分享的难题,而且显著提升了教学和学习的效率。这款工具让几何画板的使用更加灵活,方便教师和学生在没有安装几何画板...
总结来说,"WPF+WCF画板聊天程序"是一个结合了先进图形界面技术与高效通信机制的创新应用,它利用WPF创建了生动的画板环境,借助WCF实现实时的聊天和协作功能,为用户提供了一种新颖的在线沟通和创作方式。...
总结一下,易语言画板自动换行写模块是一个帮助开发者在画板上实现文本自动换行显示的工具。它涉及到了字符串处理、字符测量、画板操作等多个方面的知识,是易语言图形界面编程中的一项实用技术。通过学习和应用这个...
总结起来,易语言画板带滚动条加载图片的实现涉及到文件操作、控件交互、事件处理等多个知识点。通过熟练掌握这些技能,开发者可以创建出具有高级交互功能的图形用户界面,满足各种复杂的显示需求。在实际应用中,还...
总结起来,"几何画板课件350套 (2).zip" 是一个全面的几何学教育资源,包含了大量的教学实例和练习,适用于教师的教学辅助和学生的学习巩固。无论是在课堂教学还是自主学习中,这个压缩包都能提供丰富的素材,帮助...
#### 六、总结 通过本文的详细介绍,我们了解到几何画板5.01控件不仅解决了以往版本中存在的问题,还进一步增强了其功能性和易用性。对于广大教师来说,这一工具无疑将成为提升教学质量的重要帮手。无论是制作动态...
总结来说,通过“易语言画板画线”项目的开发,学习者能够深入理解易语言的编程基础,包括图形用户界面的设计、事件驱动编程、绘图命令的使用,以及文件操作等。该项目不仅能够帮助初学者快速上手易语言编程,而且...
总结,这个"VC实现的画板"项目是一个综合性的学习案例,涵盖了Windows编程的基础、GUI设计、事件处理、绘图函数和状态管理等多个方面。对于想要提升VC编程技能,尤其是对GUI应用程序开发感兴趣的开发者来说,这是一...
总结,MFC为创建Windows桌面应用提供了强大的支持,尤其是对于画板类应用,MFC的图形绘制能力和用户交互处理机制使得开发过程更为简便。通过定制CView类,结合MFC的事件处理和GDI绘图API,我们可以构建出功能丰富的...