CAShapelayer 绘图的橡皮擦功能:SWIFT
Eraser functionality for CAShapelayer drawings : SWIFT
我正在开发绘图应用程序。我想实现橡皮擦功能,可以擦除使用 UIBezierPath.Is 绘制的路径吗??
我试过下面的代码,但它不起作用
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
是矢量图。是形状。通常的橡皮擦工具适用于光栅(基于像素)绘图。两者不同,并且没有一种直接的方法可以在矢量图上使用橡皮擦工具。
一种方法是让橡皮擦工具编辑一个应用到形状层的遮罩层。它将具有擦除蒙版不透明的形状层部分的效果。
其中一个棘手的部分是,一旦您绘制到蒙版中,就必须擦除蒙版的那部分,以便用户能够将新内容绘制到已擦除的区域中,并且这可能会导致旧绘图的擦除部分显示出来。
让你想做的事情顺利进行将非常棘手。
我正在开发绘图应用程序。我想实现橡皮擦功能,可以擦除使用 UIBezierPath.Is 绘制的路径吗??
我试过下面的代码,但它不起作用
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
是矢量图。是形状。通常的橡皮擦工具适用于光栅(基于像素)绘图。两者不同,并且没有一种直接的方法可以在矢量图上使用橡皮擦工具。
一种方法是让橡皮擦工具编辑一个应用到形状层的遮罩层。它将具有擦除蒙版不透明的形状层部分的效果。
其中一个棘手的部分是,一旦您绘制到蒙版中,就必须擦除蒙版的那部分,以便用户能够将新内容绘制到已擦除的区域中,并且这可能会导致旧绘图的擦除部分显示出来。
让你想做的事情顺利进行将非常棘手。