问题
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
回答1:
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
orCanvas
-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.
来源:https://stackoverflow.com/questions/8993292/cutting-a-multipoint-ploygon-out-of-bitmap-and-placing-it-on-transparency