iOS-在边界范围内绘制

时间:2019-11-29 09:28:58

标签: swift drawing uibezierpath blending

我只想画一条封闭的路径,就像在边框内一样。

我已经在下面完成了代码,可以从洪水填充算法中找到一条封闭的路径
下面是封闭的,我只想在此封闭路径内绘制

if !closePath.isEmpty {
            closePath.close()
            let context = UIGraphicsGetCurrentContext()!
            context.setBlendMode(.copy)
            context.addPath(closePath.cgPath)
            context.setLineCap(.round)
            context.setAlpha(1.0)
            context.setLineWidth(1)
            context.setStrokeColor(UIColor.red.cgColor)
            context.strokePath()

        }

触摸时

override func draw(_ rect: CGRect) {
        drawFloodFill(path: UIBezierPath())
        // Drawing code
        let context = UIGraphicsGetCurrentContext() // get your current context
        context?.saveGState() // save the current state
        context?.setBlendMode(.sourceIn) // change blend mode to DestinationOut (R = D * (1-Sa))

        if touchEnd == true {
            UIColor.orange.set()
        } else {
            UIColor.yellow.set();
        }

        drawingPath.lineWidth = 10
        drawingPath.lineCapStyle = .round
        drawingPath.stroke()
        context?.restoreGState() // restore state of context
    }

我已经使用混合模式作为Source In。

绘制时间太长了。

0 个答案:

没有答案