画板总结


  我们想用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,从而设置粗细。我觉得最神奇的是,直线,两点确

定一条直线,但是刷子怎么办,可以把它理解为由无数细小的直线组

成,用画直线的方法即可,并且把末点的坐标赋给起点,这样重合就

变成点了。还有一点注意,就是在写完这些之后,再把它们的粗细调

回最开始的,这样就不会用完刷子,再用直线,直线和刷子一个粗细

了。至于喷枪,它是点的集合,所以我们要用到随机数,至于多少个

点我们可以自己订,用循环控制。
  保存的问题,等重绘弄明白,在重绘那里再写,画板先就这些,以后

必定还要补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值