我正在尝试构建一个绘图应用程序。 该申请分为3部分:
第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
答案 0 :(得分:0)
我不确定您的应用是保留以前绘制的路径还是绘制新路径。原因是每次调用onDraw()方法时,你都在创建一个新的位图和绘图路径,而你也没有保存以前的路径,因为你正在调用 mpath.reset()。
还有一点,这非常重要:永远不要!在迭代中调用createBitmap()方法。它消耗大量内存并导致 outOfMemory 异常。
你问题的解决方案是:
在这里,您可以按照link来访问android api演示代码。