Android:使用画布和路径屏蔽位图,不遵循尺寸和位置

Android:使用画布和路径屏蔽位图,不遵循尺寸和位置,android,canvas,bitmap,mask,Android,Canvas,Bitmap,Mask,我正在尝试创建一个Android应用程序,让用户选择一张图片并使用模板进行裁剪。也可以旋转模板: P>黑色中间半透明的方框是模板。这个想法是点击左上角的按钮,背景图片和模板的交集将被保留 第二个图像是期望的结果,第三个图像是我得到的结果 位置不正确(不符合按钮下方的坐标)。尺寸也不正确。刻度是正确的 以下是我目前的代码: Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sample); Bitmap

我正在尝试创建一个Android应用程序,让用户选择一张图片并使用模板进行裁剪。也可以旋转模板:

P>黑色中间半透明的方框是模板。这个想法是点击左上角的按钮,背景图片和模板的交集将被保留

第二个图像是期望的结果,第三个图像是我得到的结果

位置不正确(不符合按钮下方的坐标)。尺寸也不正确。刻度是正确的

以下是我目前的代码:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sample);
Bitmap result = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());
Canvas canvas = new Canvas(result);    

Paint paint = new Paint();
paint.setAntiAlias(true);
Path path = new Path();
path.lineTo(template.topleftx, template.toplefty);
path.lineTo(template.toprightx,template.toprighty);
path.lineTo(template.bottomrightx,template.bottomrighty);
path.lineTo(template.bottomleftx,template.bottomlefty);
path.lineTo(template.topleftx,template.toplefty);    

canvas.drawPath(path, paint);    

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, 0, 0, paint);    

imageView1.setImageBitmap(result);
我做错了什么


我希望有人能帮我解决这个问题。

您显示了不想要的结果,但没有显示想要的结果。对此,我深表歉意!以下是我想要的效果:我还将更新我的问题。您是否尝试了
BitmapShader
?我需要裁剪最终图像。我刚刚意识到Canvas并没有真正切割图像,只是掩盖了它(这么说来,结果如何?