奇妙なCGPathRef
形のポリゴン用です。このパスの外側の領域にアルファを適用する必要があります。これは非常に簡単です。
CGContextAddPath(context, crazyPolygon);
CGContextSetFillColor(context, someAlphaColor);
CGContextEOFillPath(context);
サークルと同じようなことをする必要があります。これも簡単です。
CGMutablePathRef circlePath = CGPathCreateMutable();
CGPathAddRect(circlePath, NULL, rect);
CGPathAddEllipseInRect(circlePath, NULL, circleBox);
CGContextAddPath(context, circlePath);
CGContextSetFillColor(context, someAlphaColor);
CGContextEOFillPath(context);
2つの形状を交差させようとすると、問題が発生します。両方の形状の内側にないピクセルにアルファを適用したいと思います。
- ポイントが円内にあるがポリゴン内にない場合は、アルファを適用します。
- ポリゴン内にあるが円内にはない場合は、アルファを適用します。
- ポリゴンと円の両方にある場合、ピクセルは完全に透明である必要があります。
私はさまざまなアプローチを試しました。どれも機能していません。最も有望なのは、ポリゴンを使用してマスクを作成し、それを使用CGContextClipToMask
して円の描画をバインドすることでした。ただし、完全な円はクリッピングなしで描画されました。