本人日前在绘制立体感多变形时,方法是在响应鼠标事件时把每两个鼠标press和release间的点纪录,并各自取一定偏移量的辅助点,让这4个点组成一个多边形,并填充他们,多变形每画一条边就填充一次,从而形成立体感多变形!!会出现一个bug,就是鼠标绘制时,完全正常,而当在画另一个图形,而整个canvas重时,会出现立体感区域重叠的地方,颜色丢失的问题!!不知道如何决,请各位帮忙解释,谢谢!!!!mouseReleased的代码如下:
 public void mouseReleased(PageMouseEvent e) {
    Point2D p = gp.getCurrentPoint();

    if (r.contains(e.getX(), e.getY())) {
      drawLine(new Line2D.Double(p.getX(), p.getY(), dp.x, dp.y));
      //设置临时点
      dp.x = e.getX();
      dp.y = e.getY();
      this.drawMode();
      drawLine(new Line2D.Double(p.getX(), p.getY(), e.getX(), e.getY()));
      //增加新节点
      gp.lineTo(e.getX(), e.getY());      //立体填充区域
      temPoint1.x = temPoint.x + 10;
      temPoint1.y = temPoint.y - 10;      temEndPoint.x = e.getX();
      temEndPoint.y = e.getY();
      temEndPoint1.x = e.getX() + 10;
      temEndPoint1.y = e.getY() - 10;
      pp.moveTo(temPoint.x, temPoint.y);
      pp.lineTo(temEndPoint.x, temEndPoint.y);
      pp.lineTo(temEndPoint1.x, temEndPoint1.y);
      pp.lineTo(temPoint1.x, temPoint1.y);
      pp.lineTo(temPoint.x, temPoint.y);      temPoint.x = e.getX();
      temPoint.y = e.getY();
      //绘制阴影部分
      gp1.lineTo(e.getX() + 6, e.getY() + 6);
      this.draw();
    }    this.dragMode();//xor成背景色 
  
  }
draw的部分:
  if (stereo == true) { //立体
      Color color = g2.getColor();
     // AlphaComposite com = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
      //    1.0f);
      g2.setColor(Color.lightGray);
      //g2.setComposite(com);
      g2.fill(pp); //画立体
      g2.setColor(Color.lightGray);
      g2.fill(pp1); //画最后立体      g2.setColor(color);
      if (fill == true) {
        g2.fill(gp);
      }
      else {
        g2.draw(gp);
      }
    }