在绘制后如何使雕刻线的边缘具有纯色

问题描述 投票:0回答:1

众所周知,绘制一条雕刻线后,有些像素具有半透明的颜色,如下所示。

enter image description here

我不知道怎么称呼这种现象,可能是由“混合模式”或“预乘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。这是有道理的,但是它存在性能问题,那么在画线时我们有办法解决它吗?谢谢。

ios core-graphics
1个回答
0
投票

这就是所谓的“抗锯齿”。在进行绘制之前,请使用CGContext.setShouldAntialias(_:)将其关闭,如下所示:

CGContext.setShouldAntialias(_:)
© www.soinside.com 2019 - 2024. All rights reserved.