Ios 我画了一条雕刻线后,如何使它的边缘具有纯色

Ios 我画了一条雕刻线后,如何使它的边缘具有纯色,ios,core-graphics,Ios,Core Graphics,我们都知道,在我们画了一条雕刻线之后,有一些像素具有半透明的颜色,如下所示 我不知道如何称呼这种现象,可能是由“混合模式”或“预乘alpha”引起的,我想知道如何忽略这些非实心像素,谢谢。 我的绘图代码: guard let ctx = UIGraphicsGetCurrentContext() else { return } ctx.addPath(path) ctx.setLineCap(.round) ctx.setLineWidth(lineWidth) ctx.setStrokeCo

我们都知道,在我们画了一条雕刻线之后,有一些像素具有半透明的颜色,如下所示

我不知道如何称呼这种现象,可能是由“混合模式”或“预乘alpha”引起的,我想知道如何忽略这些非实心像素,谢谢。 我的绘图代码:

guard let ctx = UIGraphicsGetCurrentContext() else { return }
ctx.addPath(path)
ctx.setLineCap(.round)
ctx.setLineWidth(lineWidth)
ctx.setStrokeColor(lineColor.cgColor)
ctx.setBlendMode(.normal)
ctx.setAlpha(lineAlpha)
ctx.strokePath()
我有一个解决方案,从ctx生成图像,然后将半透明像素更改为实心像素,然后将图像绘制回ctx。这是有道理的,但是它有一个性能问题,所以我们在画线的时候有办法解决它吗?谢谢。

这叫做“抗锯齿”。在绘制图形之前,请使用将其关闭,如下所示:

guard let ctx=UIGraphicsGetCurrentContext()else{return}
ctx.addPath(路径)
ctx.setLineCap(.round)
设置线宽(线宽)
ctx.setStrokeColor(lineColor.cgColor)
ctx.setBlendMode(.normal)
ctx.setAlpha(线性α)
ctx.setShouldAntialias(假)//