如何消除两个绘图点之间的间隙

时间:2017-03-09 11:02:09

标签: ios swift

当我们快速抽签时,任何身体都可以帮助我消除这种差距 以下是问题的图像:

enter image description here

这里是我们可以使用图像指针在沙子背景上绘制的代码。

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        let touch = touches.first
        lastPoint = touch!.location(in: ImageView)

        BindImageView(centerpoint: lastPoint)
    }

    override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        let touch = touches.first
        let fromPoint = touch!.location(in: ImageView)
        //drawLineFrom(fromPoint: lastPoint, toPoint: fromPoint)
        BindImageView(centerpoint: fromPoint)

        lastPoint = fromPoint
    }

    func BindImageView(centerpoint:CGPoint)
    {
        //print(centerpoint)

        let imagview = UIImageView()
        imagview.image = UIImage(named: "b1")
        imagview.center = centerpoint
        imagview.frame.size = CGSize(width: 10, height: 15)
        self.view.addSubview(imagview)

        let angle = atan2(self.lastPoint.y-(centerpoint.y), self.lastPoint.x-(centerpoint.x))
        imagview.transform = CGAffineTransform(rotationAngle: angle)
    }

1 个答案:

答案 0 :(得分:0)

您的问题如下:每次触摸&#34;您都会创建一个新图像。移动,以便跟随手指(并相应地旋转它)。但是图像&#34; b1&#34;宽度/高度只是几个像素,而手指在两个touchesMoved事件之间移动的距离可能更长。

我建议

  • 创建一个可调整大小的图片(通过代码,UIImage.resizableImage(withCapInsets:)或在资产目录中,按钮&#34;切片&#34;)
  • 调整图像大小以反映两个触摸点之间的实际距离

然而,如果用户太快&#34;并绘制&#34;曲线&#34;,您使用图像创建的线仍然会有些棱角分明但不会弯曲。因此,真正绘制贝塞尔路径(和阴影)可能会更好。这非常棘手,但与一次又一次地创建UIImageUIImageView相比,所需的资源也更少。