我想在另一个图像(作为框架)内绘制一个图像(作为家庭照片,即)。
我正在使用 ImageView 来处理这个问题。我可以拖动我的背景图像,但视图没有再次绘制正面图像。
这是我加载两个图像的代码。mFrontImage 是“框架”,mBackImage 是我们将拖动的“背景”。这些代码行没有问题。
// Create a new bitmap scaled from original bitmap
mFrontImage = Bitmap.createBitmap(bmpTemp, 0, 0, fw, fh, fmatrix, true);
mCanvas = new Canvas(mFrontImage);
mPaint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.DST_OVER));
mCanvas.drawBitmap(mFrontImage, 0, 0, mPaint);
mCanvas.drawBitmap(mBackImage, 0, 0, mPaint);
mImageV = (ImageView) this.findViewById(R.id.image_view);
mImageV.setImageBitmap(mFrontImage);
mImageV.setOnTouchListener(this);
这些是处理触摸移动的代码:
case MotionEvent.ACTION_DOWN:
downx = event.getX();
downy = event.getY();
_moving = true;
break;
case MotionEvent.ACTION_MOVE:
if (_moving)
{
dx = event.getX() - downx;
dy = event.getY() - downy;
downx = event.getX();
downy = event.getY();
x += dx;
y += dy;
mCanvas.drawColor(Color.TRANSPARENT, Mode.CLEAR);
mCanvas.drawBitmap(mFrontImage, 0, 0, mPaint);
mCanvas.drawBitmap(mBackImage, x, y, mPaint);
mImageEdit.invalidate();
}
break;
case MotionEvent.ACTION_UP:
_moving = false;
break;
线drawColor将擦除画布然后drawBitmap(mBackImage ~)但不是drawBitmap(mFrontImage ~)。
我想要实现的是在 0、0 处绘制 mFrontImage,在新位置 x、y 处绘制 mBackImage。