gpt4 book ai didi

swift - CAShapelayer 绘图的橡皮擦功能 : SWIFT

转载 作者:行者123 更新时间:2023-11-30 11:17:31 36 4
gpt4 key购买 nike

我正在开发绘图应用程序。我想实现删除使用 UIBezierPath 绘制的路径的橡皮擦功能。这可能吗?

我尝试了下面的代码,但它不起作用

    UIGraphicsBeginImageContextWithOptions(self.tempImageView.frame.size, false, 0.0)
if let context = UIGraphicsGetCurrentContext()
{
tempImageView.image?.draw(in: CGRect(x:
0, y: 0, width: self.tempImageView.frame.size.width, height: self.tempImageView.frame.size.height))
let sublayer = CAShapeLayer()
self.tempImageView.layer.addSublayer(sublayer)
context.setBlendMode(CGBlendMode.clear)
sublayer.strokeColor = editorPanelView.drawingColor.cgColor
sublayer.lineJoin = kCALineJoinRound
sublayer.lineCap = kCALineCapRound
sublayer.lineWidth = editorPanelView.brushWidth
let path = UIBezierPath()
path.move(to: CGPoint(x: mid1.x, y: mid1.y))
path.addQuadCurve(to:CGPoint(x:mid2.x, y:mid2.y) , controlPoint: CGPoint(x: prevPoint1.x, y: prevPoint1.y))
sublayer.path = path.cgPath
layerArray.append(sublayer)
UIGraphicsEndImageContext()
}

我无法找到任何解决方案。任何帮助(即使只是朝着正确的方向踢)将不胜感激。

最佳答案

CAShapeLayer 是一个矢量绘图。是形状。常用的橡皮擦工具适用于光栅(基于像素)绘图。两者是不同的,并且没有一种简单的方法可以在矢量图上使用橡皮擦工具。

一种方法是使用橡皮擦工具编辑一个应用于形状图层的 mask 层。它将具有删除形状层中 mask 不透明部分的效果。

一个棘手的部分是,一旦您绘制到蒙版中,您就必须删除蒙版的该部分,以便用户能够将新内容绘制到删除区域中,这可能会使旧绘图中被删除的部分显露出来。

让你想做的事情顺利进行是相当棘手的。

关于swift - CAShapelayer 绘图的橡皮擦功能 : SWIFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51599020/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com