Как очистить краску? - PullRequest
0 голосов
/ 23 января 2012

Я пытаюсь стереть краску в моем приложении? но это не стирание, когда я перехожу от одного занятия к другому, я хочу стереть краску.
Помогите мне, пожалуйста... Это код, который я использую

 public class MyView extends View {
            //int bh = originalBitmap.getHeight();
            //int bw = originalBitmap.getWidth(); 

            public MyView (Context c,int w,int h)  {  
                super(c);
                mBitmap = Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888);
                //Bitmap mBitmap = Bitmap.createScaledBitmap(originalBitmap,200,200,true);
                mCanvas = new Canvas(mBitmap);
                mPath = new Path();
                mBitmapPaint = new Paint(Paint.DITHER_FLAG);
                mBitmapPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC)) ;                 
            }
            @Override
            protected void onSizeChanged(int w, int h, int oldw, int oldh) {
                super.onSizeChanged(w, h, oldw, oldh);           
                /*mBitmap = Bitmap.createBitmap(bw, bh, 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);
            }
            ////////************touching evants for painting**************///////
            private float mX, mY;
            private static final float TOUCH_TOLERANCE = 5;
            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;
                }
            }

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

Ответы [ 2 ]

4 голосов
/ 10 февраля 2012

Я использую это, моя проблема решена

    mBitmap.eraseColor(Color.TRANSPARENT);
    mPath.reset(); 
    mView.invalidate();    
1 голос
/ 23 января 2012

Используйте функцию invalidate, это поможет вам перерисовать холст.

...