请教关于applet画板的一些问题
1.绘制填充式图形的时候,以鼠标拖动事件触发。以绘制矩形为例,起点确定,但是一旦鼠标快速的先向右下,再向左上移动的话,在起点周围会多处一些“渣子”出来,下面是小弟的源码:
//v是定义的向量
……
int tempwidth=0;
int tempheight=0;
int clearwidth=0;
int clearheight=0;
Point start=new Point(0,0);
Point clearstart=new Point(0,0);
for(i=0;i<v.size() - 1;i++){
Point p1 = (Point) v.elementAt(0);
Point p2 = (Point) v.elementAt(i+1);
Point p = (Point) v.elementAt(i);
//取矩形的长宽
tempwidth=Math.abs(p2.x-p1.x);
tempheight=Math.abs(p2.y-p1.y);
//矩形变小时清除范围的长宽
clearwidth=Math.abs(p.x-p1.x);
clearheight=Math.abs(p.y-p1.y);
//取起点
start.x=Math.min(p1.x,p2.x);
start.y=Math.min(p1.y,p2.y);
clearstart.x=Math.min(p.x,start.x);
clearstart.y=Math.min(p.y,start.y);
g.clearRect(clearstart.x-1,clearstart.y-1,clearwidth+1,clearheight+1);//这里我用的是清除,不知道还有没有什么方法呀。
g.fillRect(start.x,start.y,tempwidth,tempheight);
}
……
而且当点住鼠标拖动很多此的时候,效率就变的很低。求其他方法,望大虾指点迷津呀。
2.applet所在的浏览器窗口最小化之后再还原,画板所画的东西都不在了。不知道是怎么回事,小弟用的是一向量组来记录的鼠标事件获得的点。一旦鼠标释放,向量组清空。不知道是不是和这个有关系?(附带,怎么保存绘图过程)
分不够再给