Как стереть краску пальцем на картинке?

1

Может ли любой орган сказать мне стереть краску на изображении, в моем приложении я был подготовлен к нанесению рисунка пальца на изображении, если я хочу стереть его, получив черный цвет на изображении вместо стирания изображения. мой код

    public class MyView extends View {
    int bh = originalBitmap.getHeight();
    int bw = originalBitmap.getWidth();
    public MyView(Context c)  {
        super(c);
        //mBitmap = Bitmap.createScaledBitmap(originalBitmap,bw,bh,true);
        mBitmap = Bitmap.createBitmap(bw,bh,Bitmap.Config.ARGB_8888);
        mCanvas = new Canvas(mBitmap);
        mPath = new Path();
        mBitmapPaint = new Paint(Paint.DITHER_FLAG);
        mBitmapPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
    }
    public MyView (Context c, int color)  {  
        super(c);

        mBitmap = Bitmap.createScaledBitmap(originalBitmap,bw,bh,true);
        mCanvas = new Canvas(mBitmap);
        mPath = new Path();
        mBitmapPaint = new Paint(Paint.DITHER_FLAG);
        mBitmapPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC)) ;
        mCanvas.drawColor(color);
    } 
    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);           
            /*mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
            mCanvas = new Canvas(mBitmap);*/
    }
    @Override 
    protected void onDraw(Canvas canvas) {   
        canvas.drawColor(Color.TRANSPARENT);
        canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
        canvas.drawPath(mPath, mPaint);
    }

для стирания краски

 mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
  • 0
    Вы хотите, чтобы функциональность ластика так же, как Eraser в msPaint в ОС Windows?
  • 0
    смотрите это: dl.dropbox.com/u/38493970/Image-4724.jpg Я хочу стереть только красный цвет на изображении, а не стирать красный, он становится черным.
Показать ещё 3 комментария
Теги:
paint

2 ответа

6
Лучший ответ

Вы должны использовать прозрачный пользовательский вид, размещенный поверх исходного растрового изображения, вместо изменения orignal. Это будет просто. Для этого вы можете сделать

<RelativeLayout ....>
      <ImageView ......set original bitmap to this/>
      <CustomView ...... draw on this, you can erase too./>
</RelativeLayout>

Для получения измененного битового массива вызов метода getDrawingCache() на RelativeLayout. Это даст вам комбинированное растровое изображение.

Надеюсь это поможет.

  • 0
    пожалуйста, скажите мне, как это сделать, я новичок в этом.
  • 0
    во время рисования на эмуляторе все нормально, проблема после сохранения. несоответствие краски.
Показать ещё 5 комментариев
0

определить временное растровое изображение и холст, затем нарисовать холст на этом временном растровом изображении и передать это растровое изображение в onDraw, ваша работа будет выполнена,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню