如何使用UIBezierPath绘制一条线?

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

第一次使用BezierPath时,想知道这个函数实际上是如何实现的。当前,Bezier路径在图像帧内移动,而不是在屏幕上绘图。

有更好的方法吗?

func drawLineFromPoint(start : CGPoint, toPoint end:CGPoint, ofColor lineColor: UIColor, inView view:UIView) {

    var maxWidth = abs(start.x - end.x)
    var maxHeight = abs(start.y - end.y)

    var contextSize : CGSize!
    if maxWidth == 0 {
        contextSize = CGSize(width: 1, height: maxHeight)
    }else {
        contextSize = CGSize(width: maxWidth, height: 1)
    }

    //design the path
    UIGraphicsBeginImageContextWithOptions(contextSize, false, 0)
    var path = UIBezierPath()
    path.lineWidth = 1.0
    lineColor.set()

    //draw the path and make visible
    path.moveToPoint(start)
    path.addLineToPoint(end)
    path.stroke()

    //create image from path and add to subview
    var image = UIGraphicsGetImageFromCurrentImageContext()
    var imageView = UIImageView(image: image)
    view.addSubview(imageView)
    UIGraphicsEndImageContext()
}
Maj_LundyMaj_Lundy提问于
愤怒的白菜PostgreSQL DBA回答于
已采纳

结果是这样做的:

func drawLineFromPoint(start : CGPoint, toPoint end:CGPoint, ofColor lineColor: UIColor, inView view:UIView) {

    //design the path
    var path = UIBezierPath()
    path.moveToPoint(start)
    path.addLineToPoint(end)

    //design path in layer
    var shapeLayer = CAShapeLayer()
    shapeLayer.path = path.CGPath
    shapeLayer.strokeColor = lineColor.CGColor
    shapeLayer.lineWidth = 1.0

    view.layer.addSublayer(shapeLayer)
}

回答过的其他问题

如何使用Serverless框架?

愤怒的白菜PostgreSQL DBA
Serverless架构本身给用户带来什么?它实际上就是允许我们更关注业务代码,因此可以更快速的构建业务然后上线。现在互联网开发速度越来越快,因此大家期望的是进一步加快开发和业务真正上线的速度,提高迭代的能力。因此,使用Serverless的话可以更快速让业务上线,让我们更快实现...... 展开详请

如何解决不支持ER_Auth_mode-MySQL服务器的问题?

愤怒的白菜PostgreSQL DBA

8.0版本使用下面的示例改变插件的方法:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'

在OpenCV(Python)中,为什么我会从灰度图像获取3通道图像?

愤怒的白菜PostgreSQL DBA

试试这个:

 img = cv2.imread('gray.jpg',0)

0对于灰色和用于颜色

互动直播的房间数或频道数是否有上限呢?

愤怒的白菜PostgreSQL DBA

目前每客户的频道并发数上限为100 (即如果同时有100个互动直播房间同时进行旁路直播,就要全部占用这100个频道),如果有客户的并发房间数超过这个数值,主要增加频道上限,请联系QQ:3358225043 ,注明:企业+互动直播频道

调用未定义的方法Laravel \ Lumen \ Routing \ Router :: dispatch()

愤怒的白菜PostgreSQL DBA
已采纳
调度的请求没有在前一行中添加的凭据。 原因是Request::create返回一个新的请求实例。 在新创建的on中添加请求参数$request,然后将其分派。 $tokenRequest = $request->create( env('APP_URL') . 'api...... 展开详请

从API接收数据并通过AJAX将其发送到另一个页面

愤怒的白菜PostgreSQL DBA
您的PHP脚本仅生成HTML页面(基本上是文本)。 javascript可以由浏览器解释和执行。但如果没有浏览器读取此页面并执行它,则没有任何反应。PHP生成一个网页,没有人读取它,事情就此结束。 您也可以使用PHP通过POST发送数据。您可以使用http_build_quer...... 展开详请

所属标签

扫码关注云+社区