2011-12-07 20 views
0

这是我的程序代码:如何根据下面的代码清除我的画布?

SingleTouchEvent是我的课

的名称中使用canvas.onDraw但它只能更改背景我累了。我想要的是,清除画布上的另一张图纸。

public class SingleTouchEventView extends View { 
private Paint paint = new Paint(); 
private Path path = new Path(); 


public SingleTouchEventView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    paint.setAntiAlias(true); 
    paint.setStrokeWidth(6f); 
    paint.setColor(Color.GREEN); 
    paint.setStyle(Paint.Style.STROKE); 
    paint.setStrokeJoin(Paint.Join.ROUND); 


} 

它只改变屏幕的颜色。它不会删除画布的前一个内容。

@Override 
protected void onDraw(Canvas canvas) { 


    canvas.drawColor(Color.BLACK); 
    canvas.drawPath(path, paint); 

} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    float eventX = event.getX(); 
    float eventY = event.getY(); 

    switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     path.moveTo(eventX, eventY); 

     return true; 
    case MotionEvent.ACTION_MOVE: 
     path.lineTo(eventX, eventY); 
     break; 
    case MotionEvent.ACTION_UP: 
     // nothing to do 
     break; 
    default: 
     return false; 
    } 


    // Schedules a repaint. 
invalidate(); 


return true; 
} 



} 
+0

关闭一个副本http://stackoverflow.com/questions/5729377/android-canvas-how-do-i-clear-delete-contents-of-a-canvas-bitmaps-livin –

+0

哪里会iplace的canvas.onDraw? – user1081908

回答

0

call invalidate();在OnDraw函数结束时,它会不停的叫唤的onDraw,在此之后作出这样的检查:

if(isClear) 
{ 
    invalidate();//It'll draw nothing. 
} 
else 
{ 
    do your drawing.. 
} 

或点击此链接: How to clear finger paint?

+0

谢谢!但我会在哪里放置上面给出的检查? – user1081908

+0

onDraw函数.. –

+0

我得到错误if(isClear).... – user1081908

0

试试:

canvas.drawColor(0, Mode.CLEAR);