вид отрисовки: рисунок не находится в том же положении, что мой палец или курсор - PullRequest
0 голосов
/ 06 сентября 2018

Я создал вид, в котором мы можем рисовать, но когда я рисую, линия создается очень далеко от курсора или пальца.

Красная линия - это движение моего пальца или курсора, а черная линия - это то, что нарисовано

enter image description here

   class DrawViewController: UIViewController {

        @IBOutlet weak var imageView: UIImageView!
        var lastPoint = CGPoint.zero
        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 drawLines(fromPoint:CGPoint,toPoint:CGPoint) {

            UIGraphicsBeginImageContext(self.view.frame.size)
            imageView.image?.draw(in: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
            let context = UIGraphicsGetCurrentContext()

            context?.move(to: CGPoint(x: fromPoint.x, y: fromPoint.y))
            context?.addLine(to: CGPoint(x: toPoint.x, y: toPoint.y))

            context?.setBlendMode(CGBlendMode.normal)
            context?.setLineCap(CGLineCap.round)
            context?.setLineWidth(5.0)
            context?.setStrokeColor(UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 1.0).cgColor)

            context?.strokePath()

            imageView.image = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
        }

        override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?){
            swiped = true
            if let touch = touches.first {
                let currentPoint = touch.location(in: self.view)
                drawLines(fromPoint: lastPoint, toPoint: currentPoint)
                lastPoint = currentPoint
            }
        }

        override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?){ if !swiped { drawLines(fromPoint: lastPoint, toPoint: lastPoint) } }

        override func viewDidLoad() {super.viewDidLoad()}
        override func didReceiveMemoryWarning() {super.didReceiveMemoryWarning()}

1 Ответ

0 голосов
/ 06 сентября 2018

попробуйте изменить ваш imageView temp для

imageView.image?.draw(in: view.bounds)

и

context.move(to: fromPoint)
context.addLine(to: toPoint)

удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...