XP画图板版本1

来源:互联网 发布:网络推广的目的和意义 编辑:程序博客网 时间:2024/06/05 01:11

                                                  XP 画图板版本1

     最近一直在做画图板,一直到昨天,完成了我的第一个版本。

     实现的功能只有九个:喷枪、刷子、铅笔、直线、椭圆、矩形、圆角矩形、橡皮擦、多边形。窗体中三个面板:工具面板、颜色面板、绘图面板。鼠标监听器:拖拽、点击、释放。但是连一个标签都没有,相对于一起学习的同学而言,我是比较菜的吧。  

     今天上台演讲展示自己的作品,我主要讲了自己在做的时候遇到的问题,以及我解决的方案。

     1、刷子:刷子、铅笔的代码几乎是一样的,唯一的区别就是刷子比铅笔要粗,调用 BasicStroke()方法就可以调整粗细问题。但是我在做的时候,选择了刷子之后,线条变粗了,再选择其它的工具时,线条还是粗的,解决的方法很简单,就是在鼠标监听器点击动作时,再调用 BasicStroke()方法将粗细改回来。   

     2、橡皮擦:橡皮擦本身实现代码很简单,就是白色覆盖所画的颜色而已,这个没难度。但是我在看电脑自带的画图板时,看到橡皮擦有它自己的一个区域框,当时我就在想,怎么能够让人直白的看到擦掉的区域,于是,有了解决方法,添加一个图片,跟随鼠标移动,就像鼠标的箭头那样,鼠标去哪,图片也去哪,调用了 setCusor() 方法。

     3、喷枪:喷枪喷出来的是散列的点,主要是调用了random()的方法,形成散列点群,但是当时遇到一个问题,就是区域内点的问题,于是设置了一个计数器count,保证每个区域有30个散列点,一共是四个扇形区域,组成一个圆形区域。但是,程序编写出来之后,只能喷出来一个圆形,不能进行拖拽,于是在鼠标拖拽监听器里我再次加入该代码,当然,为了画出来的图比较美观,我将点的密度稍稍调小了点。

     4、多边形,其实多边形就是很多条直线构成的,但是在编写程序的时候要注意几个方面,第一要将首次点击的坐标保存起来(为了比较),第二,再次设置一组变量以交换点,第三,规定一个区域(第一个点周围),在该区域内点击任意一点,可实现多边形封闭。

     5、重绘。这是我目前遇到的一个大问题,在版本1中不好实现,版本1 是面向过程的,重绘问题解决起来麻烦。版本2是面向对象的,将会解决重绘问题,同时在版本2中会新增功能,敬请期待哦~

0 0
原创粉丝点击