背景为黑色时,Android PorterDuff.Mode.CLEAR无法正常工作



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

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));
        }
    });

那么,有什么想法吗?为什么会发生这种情况?我该如何解决这个问题?

提前感谢!

实际上我发现我的问题在哪里。在我用于绘图等的自定义视图中,我正在进行

 @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);
    }

我只能在上更改

相关内容

  • 没有找到相关文章

最新更新