class MyView extends View
{   
    Paint mpaint;
    Bitmap bitmap;
    Canvas canvas;
    //Paint bitmapPaint;
    ArrayList<Vertex> arVertex;
    
    public MyView(Context context)
    {   
        super(context);   
           
        arVertex = new ArrayList<Vertex>();   
           
        mpaint = new Paint();   
        mpaint.setColor(Color.BLACK);   
        mpaint.setStrokeWidth(5.0f);   
        mpaint.setAntiAlias(true); 
        bitmap = Bitmap.createBitmap(320,480,Bitmap.Config.ARGB_8888);
        canvas = new Canvas(bitmap);
        
       // bitmapPaint = new Paint(Paint.DITHER_FLAG);
    }  
    
    public void changeColor(int color)
    {
     switch(color)
     {
      case 1:
       mpaint.setColor(Color.BLACK);
       break;
      case 2:
       mpaint.setColor(Color.RED);
       break;
      case 3:
       mpaint.setColor(Color.BLUE);
       break;
      case 4:
       mpaint.setColor(Color.YELLOW);
       break;
      case 5:
       mpaint.setColor(Color.GREEN);
       break;
      case 6:
       mpaint.setColor(Color.WHITE);    //캔버스가 흰색이기 때문에 흰색 팬으로 덮음
       break;
     }
     
    }
       
    @Override  
    protected void onDraw(Canvas canvas)
    {   
        canvas.drawColor(Color.WHITE);   
        canvas.drawBitmap(bitmap, 0,0, mpaint);
        
        for(int i=0; i<arVertex.size(); i++)
        {   
            if(arVertex.get(i).draw)
            {   
                canvas.drawLine(arVertex.get(i-1).x,    
                    arVertex.get(i-1).y,    
                    arVertex.get(i).x,    
                    arVertex.get(i).y,    
                    mpaint);   
            }   
        }   
    }   
  
    @Override  
    public boolean onTouchEvent(MotionEvent event)
    {   
        // TODO Auto-generated method stub   
        switch (event.getAction())
        {   
         case MotionEvent.ACTION_DOWN:   
             arVertex.add(new Vertex(event.getX(), event.getY(), false));   
             return true;   
             //break;   
         case MotionEvent.ACTION_MOVE:   
             arVertex.add(new Vertex(event.getX(), event.getY(), true));   
             invalidate();   
             return true;   
        }   
        return false;   
    }   
  
    public class Vertex
    {   
        float x;   
        float y;   
        boolean draw;   
           
        Vertex(float _x, float _y, boolean _d)
        {   
            this.x = _x;   
            this.y = _y;   
            this.draw = _d;   
        }   
    }
}  


이렇게 기본 소스가 있습니다.  이 소스에 팬 색 변경과 저장 기능을 넣을려고 하는데요.

위처럼 changeColor메소드를 하나 만들어서 해봤는데 색은 변경 되는데 문제는 그전에 그려졌던 선까지 같이 색이 바뀝니다....

왜 그런건가요 ㅠㅠ

그리고 화면 지우기 기능을 하고 싶은데요 bitmap 하나 만들어서 덮어씌우면 되나요?

또한 저장기능을 할려면 위에 선언한 비트맵을 그대로 저장하면 되나요??