如何在Android中选择位图中的特定区域并删除背景色

如何在Android中选择位图中的特定区域并删除背景色,android,canvas,bitmap,Android,Canvas,Bitmap,我正在开发一个Android应用程序,用户可以上传他的照片,应用一些滤色器,然后保存到他的图库中。我需要用户选择位图中的一些区域,并更改其背景色,然后保存到gallery。如何获取此信息?以下示例假定您的区域由三角形限定。 路径还有addRect addCircle、addOval等 Canvas canvas = new Canvas(bmp); Path p = new Path(); p.moveTo(x1, y1); p.lineTo(x2, y2); p.lineTo(x3, y3)

我正在开发一个Android应用程序,用户可以上传他的照片,应用一些滤色器,然后保存到他的图库中。我需要用户选择位图中的一些区域,并更改其背景色,然后保存到gallery。如何获取此信息?

以下示例假定您的区域由三角形限定。 路径还有addRect addCircle、addOval等

Canvas canvas = new Canvas(bmp);

Path p = new Path();
p.moveTo(x1, y1);
p.lineTo(x2, y2);
p.lineTo(x3, y3);
p.close();

canvas.clipPath(p);
canvas.drawColor(myColour);
对于矩形区域,代码要简单得多:

Canvas canvas = new Canvas(bmp);
Paint paint = new Paint();
paint.setColor(myColour);  // Style.FILL by default
canvas.drawRect(left, top, right, bottom, paint);

改变背景有什么意义?用颜色覆盖区域?@coderyme是的。用颜色覆盖谢谢。但是区域可以是任何东西,我们如何绘制区域。您可以用上面的示例中的路径类创建区域。对于预定义的形状,我可以创建上面的区域,但如何为不规则形状创建区域。ontouch事件我必须创建一个区域。ontouch为您提供一组点,这些点形成一个多边形,因此上面的示例有效。唯一的问题是多边形可能不是凸的。