ペイントアプリケーションを構築しようとしています。アプリケーションは 3 つの部分に分かれています。
- 最初、アプリケーションの背景は白で、ユーザーはさまざまなブラシ サイズとさまざまな色を使用してキャンバスにペイントできます。
- ユーザーはキャンバス画像をSDカードに保存できます
- ユーザーはSDカードから画像をアップロードし、画像に再度ペイントできます
ポイント1と2は正常に機能しており、白い背景にペイントできます. しかし、ポイント 3、Gallery から画像をアップロードして画像にペイントしようとすると、以前にペイントしたパスが消えて、新しいパスのみが表示されます。
コード:
onDraw(Canvas canvas){
mBitmap = Bitmap.createBitmap(320, 480, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
mPath = new Path();
mBitmapPaint = new Paint(Paint.DITHER_FLAG);
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, mPaint);
}
onTouch - >
case MotionEvent.ACTION_DOWN:
mPath.reset();
mPath.moveTo(x, y);
mX = x;
mY = y;
invalidate();
break;
case MotionEvent.ACTION_MOVE:
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;
}
invalidate();
break;
case MotionEvent.ACTION_UP:
mPath.lineTo(mX, mY);
mCanvas.drawPath(mPath, mPaint);
mPath.reset();
break;
mBitmap = BitmapFactory.decodeFile(filePath); -----this is from sd card