コア グラフィックスを使用して、中心に向かってアルファ値が増加する羽の付いた円をどのように描画しますか? このようなもの:
理想的には、色、円の半径、およびアルファ強度がパラメーターになります。
コア グラフィックスを使用して、中心に向かってアルファ値が増加する羽の付いた円をどのように描画しますか? このようなもの:
理想的には、色、円の半径、およびアルファ強度がパラメーターになります。
これは、私のアプリのいくつかでうまくいきました。柔らかさは 0 ~ 1 です。幅 (正方形) の幅と高さで CGBitmapContext を自分で作成する必要があります。
// make a path:
self.shapePath = CGPathCreateMutable();
CGPathAddEllipseInRect(self.shapePath, NULL, CGRectMake(0, 0, width, width));
CGFloat radius = width / 2.0f;
NSInteger innerRadius = (softness < 0.01f ? (NSInteger)radius : (NSInteger)ceil((1.0f - softness) * radius));
NSInteger outerRadius = (NSInteger)ceil(radius);
CGFloat alphaStep = MAX(0.0059f, (1.0f / ((outerRadius - innerRadius) + 1)));
CGFloat outerMultiplier = 1.0f / (2.0f * (CGFloat)outerRadius);
for (NSInteger i = outerRadius; i >= innerRadius; --i)
{
CGContextSaveGState(bitmapContext);
UIColor* c = [UIColor.whiteColor colorWithAlphaComponent:alphaStep];
CGContextTranslateCTM(bitmapContext, outerRadius - i, outerRadius - i);
CGFloat scale = (2.0f * (CGFloat)i) * outerMultiplier;
CGContextScaleCTM(bitmapContext, scale, scale);
CGContextSetFillColorWithColor(bitmapContext, c.CGColor);
CGContextAddPath(bitmapContext, self.shapePath);
CGContextEOFillPath(bitmapContext);
CGContextRestoreGState(bitmapContext);
}
Core GraphicsCGGradientRef
とCGContextDrawRadialGradient
() 関数を使用するか、Core 画像CIRadialGradient
フィルターを使用できます。どちらを使用するかは、ニーズによって異なります。