早上好,
我的部分应用程序具有写下一些手写笔记的能力。我正在使用指纹示例中的片段在我的应用程序中实现“橡皮擦”:
mPaint.setXfermode(new PorterDuffXfermode(
PorterDuff.Mode.CLEAR));
mPaint.setStrokeWidth(45);
mPaint.setStrokeCap(Paint.Cap.ROUND);
问题是每当我擦除用户已擦除的黑色路径时。一旦用户拿起他们的手指,它就消失了,但在他们擦除时它就在那里。我的朋友告诉我,PorterDuff 模式不应该实时使用,但我不相信他。这是我的更多代码,以防我做了一些愚蠢的事情:
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setDither(false);
mPaint.setColor(Color.BLACK);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.BUTT);
mPaint.setStrokeWidth(6);
mBitmap = Bitmap.createBitmap(800, 480,Bitmap.Config.ARGB_8888);
bBitmap = Bitmap.createBitmap(800, 480,Bitmap.Config.ARGB_8888);
bBitmap.eraseColor(Color.WHITE);
mCanvas = new Canvas(mBitmap);
mPath = new Path();
mBitmapPaint = new Paint();
maxX = maxY = 100;
minX = 750;
minY = 400;
//
private void touch_up() {
mPath.lineTo(mX, mY);
mCanvas.drawPath(mPath, mPaint);
mPath.reset();
}
//
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(bBitmap, 0, 0, null);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, mPaint);
}
有可能做我想让这个橡皮擦做的事情吗?有一个更好的方法吗?我的朋友真的是对的吗?
此外,我尝试将白色绘制为擦除,但它不起作用,因为有时用户正在标记下方的图像。我可以通过并使每个白色像素都透明,但这似乎效率极低。