我正在创建一个演示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
感谢您的帮助!
答案 0 :(得分:1)
我知道我在这里的聚会已经很晚了,但如果你改变了:
UIGraphicsBeginImageContext(view.frame.size)
到
UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, 0.0f)
;
应解决锯齿线问题。最后一个参数0.0f
指定屏幕比例。将其设置为0.0f
会自动将其设置为设备的分辨率。如果没有它,它会以1点= 1像素(非视网膜)绘制它,导致看起来像锯齿状的东西。