如何使用图形上下文以关闭路径清除任何imageView的图像

时间:2017-01-05 11:47:09

标签: ios swift image graphics

当用户在屏幕上拖动触摸时,我正在使用此代码清除图像的一部分。我有多个图像互相覆盖。现在清除到最顶层的工作正常,因此下部图像的一部分是可见的。 现在我想要实现的是用户选择一个关闭路径,选择的关闭路径的区域应该是清楚的。 用户可以选择多个图层并选择要剪切的任何部分。 例如,如果有8个图像并且用户选择了第6到第8层,那么可见部分将来自第5层,用户可以通过触摸进行清除。

func drawBrushOnLayer(fromPoint: CGPoint, toPoint: CGPoint , selected:[Int]) {               

            UIGraphicsBeginImageContext(DrawImage.frame.size)

     var context = UIGraphicsGetCurrentContext()
            DrawImage.image?.draw(in: CGRect(x: 0, y: 0, width: view.frame.size.width, height: view.frame.size.height - 50))

            context?.move(to: fromPoint)

            context?.addLine(to: toPoint)

            context?.setLineCap(.butt)

            context?.setLineWidth(BrushSize)

            context?.setBlendMode(.clear)

            context?.setShouldAntialias(false)

            UIColor.clear.set()

            context?.strokePath()

           DrawImage.image = UIGraphicsGetImageFromCurrentImageContext()!

            UIGraphicsEndImageContext()

}

现在我在图像上绘制白色,但我需要清除选定的区域,以便可以看到较低的图像。

 func drawFill(point : CGPoint) {

        autoreleasepool{

            UIGraphicsBeginImageContext(CGSize(width: self.view.frame.size.width, height: self.view.frame.size.height - 50))

            DrawImage .draw(in: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height - 50))

            UIColor.white.set()

            BezierPath.addLine(to: point)

             BezierPath.lineWidth = 2.0

             BezierPath .close()

            BezierPath.fill()

            let context = UIGraphicsGetCurrentContext()

            context?.addPath(lassoBezier.cgPath)

            newImage = UIGraphicsGetImageFromCurrentImageContext()!

           DrawImage.image = newImage

                UIGraphicsEndImageContext()

        }

 }

1 个答案:

答案 0 :(得分:0)

.data