桌面画图板的实现
实例:桌面画板画板
?
在实现桌面画板有两个问题:
第一:如何实现在桌面上画图
第二:如何实现重绘
?
首先说明第一种,其实也很简单,在桌面上画图并不是真的就直接在桌面上画,而是先给桌面截个图,然后在上面画
给人产生一种假象,感觉好像在桌面一样,其实已经是在java的窗体中了
如何给桌面截图呢?先是用Robot类拿到一个桌面然后储存在BufferImage中:及BufferImage image = robot.robot.createScreenCapture(screenRect);(实例看代码)
?
然后就是重绘的问题了,在本例中,我打算实现类似铅笔的效果,就是自由划线
如果不写重绘方法,我想大家都应该知道,只要以缩小然后放大就没了。
我们知道,要想重绘就必须得储存每个圆的位置与大小(这里已连续画圆来实现划线),大家可能第一反应就是用数组,可是用数组是不对的,也不能说不对,至少效果时能出来,但是太占内存了,而且我们不知道会有多少个圆,所以在这里我使用Arraylist。
一开始我以为这个列队几个类都要用,干脆声明成静态变量来的方便,可是问题就来了,只要是声明成静态的,那么就会报错,越界。
后来熊哥告诉我不能声明成静态的,我去网上查了一下,我发现非静态的成员变量,存储在内存堆(heap)区,静态的成员变量存储在内存栈区.
那么也就是说,静态变量不能像非静态那样不断地向系统要内存,所以就会溢出了。
?
?
?
?
?
?

