2012-03-16 6 views
2

J'ai préparé une application de peinture.Dans mon application, nous pouvons dessiner n'importe quoi.Il fonctionne bien.Voici je veux préparer effacer le doigt pour effacer la peinture.Eraser fonctionne, mais il est effaceur toute la peinture dessinée.Je veux effacer que si je touche si la peinture tirée est là pour que je l'ai écrit un code,Comment travailler avec doigt gomme dans Android?

cette ma méthode OnDraw,

public void onDraw(Canvas canvas) { 

    if (myDrawBitmap == null) { 
     myDrawBitmap = Bitmap.createBitmap(480, 800, 
       Bitmap.Config.ARGB_8888); 
     mBmpDrawCanvas = new Canvas(myDrawBitmap); 
     mIntDrawArray = new int[myDrawBitmap.getWidth() 
       * myDrawBitmap.getHeight()]; 
    } 
    if (mBmpDrawCanvas != null) { 
     myDrawBitmap.getPixels(mIntDrawArray, 0, myDrawBitmap.getWidth(), 
       0, 0, myDrawBitmap.getWidth(), myDrawBitmap.getHeight()); 
     for (Path path : ILearnPaintActivity.mArryLstPath) { 
      if (ILearnPaintActivity.mArryLstPath.contains(path) 
        && ILearnPaintActivity.paintAndEraserFlag == 1) { 
       mPaint.setXfermode(new PorterDuffXfermode(
         PorterDuff.Mode.CLEAR)); 
       mBmpDrawCanvas.drawPath(ILearnPaintActivity.mPath, mPaint); 
      } else { 
       mBmpDrawCanvas.drawPath(ILearnPaintActivity.mPath, mPaint); 
      } 

     } 
     if (myDrawBitmap != null) 
      canvas.drawBitmap(myDrawBitmap, 0, 0, null); 

    } 

} 

tirage peinture fonctionne fine.In même activité que j'ai un bouton « Eraser ». quand nous cliquons sur le bouton de gomme j'assigne le drapeau pour la différence. S'il vous plaît aidez-moi comment faire ceci ...

Répondre

0

d'abord vous devez préciser ce que effacent.

pour le canevas de base vectoriel c'est l'élément vectoriel de suppression. pour toile de base de pixel c'est dessiner moyenne avec backgournd couleur. (ou faire sa transparence)

donc à mon point de vue. quand effacer. vous pouvez changer une peinture avec la couleur backgournd. et continuez à dessiner une ligne très gras sur bitmap au toucher.

+0

déjà j'ai essayé avec la couleur de transparence, il ne fonctionne pas –

0

essayer comme ça

   mBitmap.eraseColor(Color.TRANSPARENT); // Bitmap erase color 
       mPath.reset();  // your path 
       mView.invalidate(); // your View Path