In my project I have a bitmap filling the entire screen. On this bitmap i draw a path with
android.graphics.Canvas.drawPath(Path path, Paint paint)
the paint is set in order to stroke and fill the content of the path. What I would achieve is to erase the portion of the bitamp that intersect the path. I have managed to obtain the same behavior using on another bitmmap instead of the path, and using the porter duff rules. Is there any chance to do the same thing with the path?
mPaintPath.setARGB(100, 100, 100, 100);// (100, 100, 100, 100)
mPaintPath.setStyle(Paint.Style.FILL_AND_STROKE);
mPaintPath.setAntiAlias(true);
mPath.moveTo(x0, y0));
mPath.lineTo(x1, y1);
mPath.lineTo(x2, y2);
mPath.lineTo(x3, y3);
mPath.lineTo(x0, y0);
mPath.close();
c.drawPath(mPath, mPaintPath);
Sure, just draw the path to an offscreen buffer so you can use it as a mask when you draw the bitmap, something like this:
If you can withstand aliasing, there's an easier way: just setup a clip path (note the use of
Region.Op.DIFFERENCE
which causes the insides of the path to be clipped away rather than clipping everything outside of the path):