使用Quartz 2D

时间:2015-07-07 03:12:43

标签: ios swift ipad core-graphics quartz-2d

我正在创建一个演示IOS应用程序,它将是一个简单的绘图应用程序。我使用Quartz 2D来创建一个基本的应用程序。但是,绘制的线条非常锯齿状。我正在寻找一种方法来应用抗锯齿或混合来使线条流畅。 drawLineFrom看起来像这样:

func drawLineFrom(fromPoint: CGPoint, toPoint: CGPoint) {

    UIGraphicsBeginImageContext(view.frame.size)
    let context = UIGraphicsGetCurrentContext()
    tempImageView.image?.drawInRect(CGRect(x: 0, y: 0, width: view.frame.size.width, height: view.frame.size.height))


    CGContextMoveToPoint(context, fromPoint.x, fromPoint.y)
    CGContextAddLineToPoint(context, toPoint.x, toPoint.y)
    CGContextSetAllowsAntialiasing(context, true)
    CGContextSetShouldAntialias(context, true)


    CGContextSetLineCap(context, kCGLineCapRound)
    CGContextSetLineWidth(context, brushWidth)
    CGContextSetRGBStrokeColor(context, red, green, blue, 1.0)
    CGContextSetBlendMode(context, kCGBlendModeNormal)


    CGContextStrokePath(context)


    tempImageView.image = UIGraphicsGetImageFromCurrentImageContext()
    tempImageView.alpha = opacity
    UIGraphicsEndImageContext()

}

可在此处找到该项目:https://github.com/BananaSplitio/OpenSketch

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我知道我在这里的聚会已经很晚了,但如果你改变了:

UIGraphicsBeginImageContext(view.frame.size)

UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, 0.0f);

应解决锯齿线问题。最后一个参数0.0f指定屏幕比例。将其设置为0.0f会自动将其设置为设备的分辨率。如果没有它,它会以1点= 1像素(非视网膜)绘制它,导致看起来像锯齿状的东西。