2015-04-14 117 views
1

在我的imageview中,我想每次觸摸imageview時都會繪製一個位圖,而不會擦除以前的位圖。下面的代碼繪製一個新的位圖,但也刪除了前一個。如何在添加新位圖時保留以前的位圖?由於在每個觸摸的圖像視圖上繪製位圖 - android

imageview.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 

     int action = event.getAction(); 
     x = event.getX(); 
     y = event.getY(); 

     switch (action) { 

     case MotionEvent.ACTION_DOWN: 

      Bitmap.Config config = bm.getConfig(); 
      int width = bm.getWidth(); 
      int height = bm.getHeight(); 

      Bitmap bm2 = Bitmap.createBitmap(width, height, config); 
      Canvas c = new Canvas(bm2); 

      c.drawBitmap(bm, 0, 0, null); 

      Bitmap repeat = BitmapFactory.decodeResource(getResources(), R.drawable.pic); 
      Bitmap repeat2 = Bitmap.createScaledBitmap(repeat, 50, 50, false); 
      c.drawBitmap(repeat2, x, y, p); 

      imageview.setImageBitmap(bm2); 
     break; 
     return true; 

     } 
    }); 
} 

Like this image

+0

你是如何解決這個問題的?你可以在這裏分享 – YLS

回答

1

如果將使用相同的位圖,每次...

  1. 使位圖的成員變量,並在您的onCreate系統初始化。
  2. 創建一個ArrayList作爲成員變量。
  3. 每次觸摸ImageView時添加一個新點。
  4. 循環點列表並在您的ImageView畫布上繪製相同的位圖。
0

我認爲你需要使用位圖數組,然後使用的onClick通過數組進行迭代。

0

你需要有兩層。當你改變位圖的一些像素時,它將無法處理兩層。所以你需要在圖像View上創建另一個圖層,並在那裏設置新的位圖。

您必須跟蹤您在arraylist中分析的像素,以便您可以通過將這些像素重置爲透明來處理橡皮擦。

+0

如何在imageview上創建一個圖層?您能否請詳細說明代碼 – artist

+0

請參閱:https://github.com/firebase/AndroidDrawing將以更好的方式來解釋您。 –

0

這樣做。

Bitmap bm2 = null; 
Canvas c = null; 

imageview.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      int action = event.getAction(); 
      x = event.getX(); 
      y = event.getY(); 

      switch (action) { 

      case MotionEvent.ACTION_DOWN: 

       Bitmap.Config config = bm.getConfig(); 
       int width = bm.getWidth(); 
       int height = bm.getHeight(); 

       if(bm2==null){ 
        bm2 = Bitmap.createBitmap(width, height, config); 
        c = new Canvas(bm2); 
       } 
       c.drawBitmap(bm, 0, 0, null); 

       Bitmap repeat = BitmapFactory.decodeResource(getResources(), R.drawable.pic); 
       Bitmap repeat2 = Bitmap.createScaledBitmap(repeat, 50, 50, false); 
       c.drawBitmap(repeat2, x, y, p); 

       imageview.setImageBitmap(bm2); 
      break; 
      return true; 

      } 
     }); 
    } 
相關問題