Search code examples
iosopengl-esdrawpaint

iOS- How to paint in the within limits


I used the scanning line seed filling algorithm to realize the color filling function.

But I don't know how to do that. When my pen lands in the flower, I need to draw only Inside the black edge of the flower,do not draw in the hair.

I have tried to use : CALayer *layer = [CALayer layer]; layer.contents = (__bridge id)(image.CGImage); self.drawView.layer.mask = layer; But the plan didn't work. if any one gives solution it would be so great,Thank you. (English is not my native language; please excuse typing errors.) enter image description here


Solution

  • Use a two pass approach.

    • Use the same algorithm as the fill algorithm to create a stencil mask which fills the area you want to allow the pen to draw.
    • Draw the pen with stencil testing to constrain it to the allowed region.

    Similar approach could be used to create an alpha-mask on the fly (e.g. as a texture), and mix that with the pen drawing.