iOS,UIGraphics 如何在绘制圆形矩形以创建具有发光效果的画笔时仅更改 Alpha 通道

Vic*_*r.V 6 drawing brush paint ios uigraphicscontext

我正在开发具有画笔工具的应用程序。我需要像 Instagram 一样创建画笔在此处输入图片说明.

目前我正在使用阴影来创建这种发光效果。但是我不能设置这样的阴影效果。

  let startPoint = convertToOutput(firstPoint), endPoint = convertToOutput(secondPoint)
    UIGraphicsBeginImageContextWithOptions(self.outputCanvasSize, false, 1.0)
    let context = UIGraphicsGetCurrentContext()

    context?.setFillColor(color.cgColor)
    context?.setStrokeColor(color.cgColor)
    context?.setShadow(offset: CGSize(width:0, height: 0), blur: 20, color: color.cgColor)
    context?.setLineJoin(.round)
    context?.setLineCap(.round)
    context?.setLineWidth(brush.radius * 2)

    context?.move(to: startPoint)
    context?.addLine(to: endPoint)

    context?.drawPath(using: .stroke)

    glowOverlayCanvas.image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
Run Code Online (Sandbox Code Playgroud)

但是效果不是很好。 在此处输入图片说明

所以我使用下一个算法绘制这样的画笔:

  1. 以 1px 步长、rad 20 px 绘制彩色平滑填充圆。
  2. 然后绘制白色填充圆圈前景,没有平滑,rad 5 px。

我有混合模式的问题,因为如果我使用 .normal,平滑效果就会消失 - alpha 通道累积(很少有圆圈交叉)

如何实现以下混合模式
Rrgb = Srgb

Ra = MAX(Da, Sa)