快速,慢速的性能和绘图应用程序低FPS

时间:2017-07-20 12:37:36

标签: ios swift performance drawing frame-rate

我正在尝试创建一个绘图应用程序,使用此代码绘制线条,但它的性能非常慢

 func drawLineNew(_ prevPoint1 : CGPoint,_ prevPoint2 : CGPoint ,_ currentPoint : CGPoint){
    UIGraphicsBeginImageContextWithOptions(ImageView.frame.size, false, 0.0)
    let context = UIGraphicsGetCurrentContext()
    ImageView.image?.draw(in: CGRect(x: 0, y: 0, width: view.frame.size.width, height: view.frame.size.height))
    var mid1 = CGPoint.init(x: (prevPoint1.x + prevPoint2.x)*0.5, y: (prevPoint1.y + prevPoint2.y)*0.5)
    var mid2 = CGPoint.init(x: ((currentPoint.x) + prevPoint1.x)*0.5, y: ((currentPoint.y) + prevPoint1.y)*0.5)
    context?.move(to: prevPoint2)
    context?.addCurve(to: mid2, control1: mid1, control2: prevPoint1)
    context?.setLineCap(CGLineCap.round)
    context?.setLineWidth(brushWidth)
    context?.setStrokeColor(red: red, green: green, blue: blue, alpha: opacity)
    context?.setBlendMode(CGBlendMode.normal )
    //context?.setShouldAntialias(true)
    context?.strokePath()
    ImageView.image = UIGraphicsGetImageFromCurrentImageContext()
    ImageView.alpha = 1.0
    self.prevPoint1 = mid2
    //context?.clear(CGRect.init(origin: CGPoint.init(x: 0, y: 0), size: ImageView.frame.size))
    UIGraphicsEndImageContext()
    lastPoint = currentPoint
}

1 个答案:

答案 0 :(得分:0)

画出太多线条时表现很慢。考虑通过不绘制所有线来优化性能,具体取决于绘图区域的大小以及像素在显示的比例上所代表的距离。