2017-04-04 189 views
0

我在製作臉部編輯應用程序。我想用寫意畫一張臉。我希望能夠停止並暫停畫布上的繪圖。這裏是我的代碼:如何停止或暫停畫布上的圖形

protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    canvas.drawBitmap(testbmp, 0, 0, mBitmapPaint); 
    canvas.drawPath(mPath, mPaint); 
    canvas.drawPath(circlePath, circlePaint); 
} 

private float mX, mY; 
private static final float TOUCH_TOLERANCE = 4; 

private void touch_start(float x, float y) { 
    mPath.reset(); 
    mPath.moveTo(x, y); 
    mX = x; 
    mY = y; 
} 

private void touch_move(float x, float y) { 
    float dx = Math.abs(x - mX); 
    float dy = Math.abs(y - mY); 
    if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) { 
     mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2); 
     mX = x; 
     mY = y; 

     circlePath.reset(); 
     circlePath.addCircle(mX, mY, 30, Path.Direction.CW); 
    } 
} 

private void touch_up() { 
    mPath.lineTo(mX, mY); 
    circlePath.reset(); 
    // commit the path to our offscreen 
    mCanvas.drawPath(mPath, mPaint); 
    // kill this so we don't double draw 
    mPath.reset(); 
} 

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

    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      touch_start(x, y); 
      invalidate(); 
      break; 
     case MotionEvent.ACTION_MOVE: 
      touch_move(x, y); 
      invalidate(); 
      break; 
     case MotionEvent.ACTION_UP: 
      touch_up(); 
      invalidate(); 
      break; 
    } 
    return true; 
} 

public void onClickEraser() { 
    boolean isEraserOn = true; 
    if (isEraserOn) 
     mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); 
    else 
     mPaint.setXfermode(null); 
} 
+0

如果我們知道你的意思是「停止和暫停」,那麼這篇文章的讀者可能會更清楚。如果用戶自己編輯圖像,那麼停止繪圖的意圖是什麼?如果您想限制用戶只繪製一個視圖秒,定時器或倒數計時器應該完成這項工作。如果在一定距離之後,則計算用戶已經做出的距離並停在固定的距離處。 – Opiatefuchs

+0

感謝@Opiatefuchs爲您的回覆我只是想當用戶完成圖像上的繪圖然後用戶單擊按鈕,它會停止繪圖方法。用戶可以使用應用程序的其他功能。希望你明白。 –

回答

1

您可以停止執行onDraw。將執行它裏面的所有方法。 您的應用程序或您的視圖可以實現一些機制來管理繪圖隊列,並且onDraw方法將從開始繪製到您決定的位置,但這不是工作方法的自然方式。