我试图在UI
ImageView上绘图.使用
Swift 1.2我能够让它工作,但我不得不将它转换为swift 3.0而我无法让它工作.
变量;
var lastPoint = CGPoint.zero var red: CGFloat = 0.0 var green: CGFloat = 0.0 var blue: CGFloat = 0.0 var brushWidth: CGFloat = 10.0 var opacity: CGFloat = 1.0 var swiped = false
代码;
override func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?) { swiped = false if let touch = touches.first { lastPoint = touch.location(in: self.view) } } func drawLineFrom(fromPoint: CGPoint,toPoint: CGPoint) { imageView.image?.draw(in: CGRect(x: 0,y: 0,width: view.frame.size.width,height: view.frame.size.height)) UIGraphicsBeginImageContext(self.imageView.bounds.size); let context = UIGraphicsGetCurrentContext() context?.move(to: fromPoint) context?.addLine(to: toPoint) context?.setLineCap(CGLineCap.round) context?.setlinewidth(brushWidth) context?.setstrokeColor(red: red,green: green,blue: blue,alpha: 1.0) context?.setBlendMode(CGBlendMode.normal) imageView.image = UIGraphicsGetimageFromCurrentimageContext() imageView.alpha = opacity UIGraphicsEndImageContext() } override func touchesMoved(_ touches: Set<UITouch>,with event: UIEvent?) { swiped = true if let touch = touches.first { let currentPoint = touch.location(in: view) drawLineFrom(fromPoint: lastPoint,toPoint: currentPoint) lastPoint = currentPoint } } override func touchesEnded(_ touches: Set<UITouch>,with event: UIEvent?) { if !swiped { // draw a single point self.drawLineFrom(fromPoint: lastPoint,toPoint: lastPoint) }
解决方法
你必须开始图像上下文:
UIGraphicsBeginImageContextWithOptions(view.bounds.size,false,0)
你还必须克服这条道路:
context?.strokePath()
您也没有绘制上一张图片:
imageView.image?.draw(in: view.bounds)
从而:
func drawLine(from fromPoint: CGPoint,to toPoint: CGPoint) { UIGraphicsBeginImageContextWithOptions(view.bounds.size,0) imageView.image?.draw(in: view.bounds) let context = UIGraphicsGetCurrentContext() context?.move(to: fromPoint) context?.addLine(to: toPoint) context?.setLineCap(CGLineCap.round) context?.setlinewidth(brushWidth) context?.setstrokeColor(red: red,alpha: 1.0) context?.setBlendMode(CGBlendMode.normal) context?.strokePath() imageView.image = UIGraphicsGetimageFromCurrentimageContext() imageView.alpha = opacity UIGraphicsEndImageContext() }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。