我需要帮助我正在使用的应用程序。我正在尝试创建一个绘画应用程序,几天前我注意到了一个问题,现在我决定做一些研究来解决它。当我使用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));
}
});
所以任何想法为什么会发生,我该如何解决这个问题?
提前致谢!
答案 0 :(得分:2)
其实我发现我的问题在哪里。在我用于绘图等的自定义视图中,我正在执行此操作
@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);
}
我只能在我的
上改变