I have a bitmap out of which I'm cutting out a multipi point polygon. I'm curious what the correct process is for taking the pixels within the arbitrary shape and copying them onto a new bitmap where the rest of the pixels are transparent. The objective is to allow the user to trace the shape and then remove everything outside the polygon.
I have the polygon part worked out (as a an array of points), but now am stumped as to how to transfer just the selected pixels to a new Bitmap.
TIA
Not sure how your code works, but here's an idea on how to do it:
- Calculate the bounding rectangle of the selected area (find min x, min y, max x and max y from your points).
- Crop your image to the bounding rectangle using any of the
Bitmap
or Canvas
-methods.
- Create a
Path
from your points, all moved into your new bitmap (x-=minX, y-=minY)
;
- Set your Paths
FillType
to one that is inverse (fill the outside).
- On your new cropped canvas, draw the Path using a paint with the Xfermode as
PorterDuff.CLEAR
, which removes all color.