读书人

圆桌面画图板的实现

发布时间: 2013-08-01 15:23:18 作者: rapoo

桌面画图板的实现

实例:桌面画板画板

?

在实现桌面画板有两个问题:

第一:如何实现在桌面上画图

第二:如何实现重绘

?

首先说明第一种,其实也很简单,在桌面上画图并不是真的就直接在桌面上画,而是先给桌面截个图,然后在上面画

给人产生一种假象,感觉好像在桌面一样,其实已经是在java的窗体中了

如何给桌面截图呢?先是用Robot类拿到一个桌面然后储存在BufferImage中:及BufferImage image = robot.robot.createScreenCapture(screenRect);(实例看代码)

?

然后就是重绘的问题了,在本例中,我打算实现类似铅笔的效果,就是自由划线

如果不写重绘方法,我想大家都应该知道,只要以缩小然后放大就没了。

我们知道,要想重绘就必须得储存每个圆的位置与大小(这里已连续画圆来实现划线),大家可能第一反应就是用数组,可是用数组是不对的,也不能说不对,至少效果时能出来,但是太占内存了,而且我们不知道会有多少个圆,所以在这里我使用Arraylist。

一开始我以为这个列队几个类都要用,干脆声明成静态变量来的方便,可是问题就来了,只要是声明成静态的,那么就会报错,越界。

后来熊哥告诉我不能声明成静态的,我去网上查了一下,我发现非静态的成员变量,存储在内存堆(heap)区,静态的成员变量存储在内存栈区.

那么也就是说,静态变量不能像非静态那样不断地向系统要内存,所以就会溢出了。


?
圆桌面画图板的实现
?
圆桌面画图板的实现
?
?

?


?

读书人网 >编程

热点推荐