2012-07-09 65 views
1

我需要对正在工作的应用程序有一点帮助。我正在尝试创建一个绘画应用程序,并且前几天我注意到了一个问题,现在我决定做一些研究来解决它。当我使用PorterDuff.Mode.CLEAR将我的笔刷用作橡皮擦时,它的工作原理与我的背景为白色时一样。但是,如果我使用其他颜色(例如黑色,如mCanvas.drawColor(Color.BLACK);)设置我的背景,并在使用橡皮擦之后,我使用橡皮擦的地方涂上了白色。 下面是我如何设置我的橡皮变量:Android PorterDuff.Mode.CLEAR在背景为黑色时无法正常工作

erase.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      stamp=false; 
      MODE = ERASER_MODE; 
      mPaint.setColorFilter(null); 
      mPaint.setShader(null); 
      mPaint.setMaskFilter(null); 
      mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); 
     } 
    }); 

因此,任何想法,为什么它的发生,我怎么能解决这个问题?

在此先感谢!

回答

1

其实我发现我的问题在哪里。在我的自定义视图,我用绘图和等我在做这个

@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); 
     mCanvas.drawColor(parentColor); //parentColor = currentBackgroundColor 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     canvas.drawColor(Color.WHITE); 
     canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); 
     canvas.drawPath(mPath, mPaint); 
    } 

,我只有在我的

改变
相关问题