2015-04-14 3 views
1

В моем изображении я хочу рисовать растровое изображение каждый раз, когда изображение просматривается без стирания предыдущего растрового изображения. Ниже код рисует новый растровый рисунок, но также стирает предыдущий. Как сохранить предыдущее растровое изображение при добавлении нового? БлагодаряРисование растрового изображения на изображении с каждым касанием - андроид

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. Сделать Bitmap переменной член и инициализировать его в OnCreate системы.
  2. Создайте ArrayList как переменную-член.
  3. Добавить новый пункт каждый раз, когда вы касаетесь ImageView.
  4. Прокрутите список точек и нарисуйте один и тот же растровый рисунок на холсте ImageView.
0

Я думаю, вам нужно использовать массив Bitmaps, а затем использовать OnClick для перебора массива.

0

Для этого вам нужно иметь два слоя. Когда вы меняете некоторые пиксели растрового изображения, он не сможет обрабатывать два слоя. Таким образом, вам нужно создать еще один слой на изображении View и установить там новое растровое изображение.

Вы должны отслеживать пиксели, которые вы проанализировали в arraylist, так что вы можете обрабатывать как ластик, также путем сброса этих пикселей в прозрачные.

+0

Как создать слой на изображении? Не могли бы вы прокомментировать код – 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; 

      } 
     }); 
    } 
Смежные вопросы