Я рисую несколько CGPaths
в представлении Какао в методе drawRect на iPad.Я начал рисовать их прямо в контексте UIGraphicsGetCurrentContext()
, но производительность пошла на юг, когда мои пути стали очень длинными.Основываясь на нескольких других вопросах, я начал изучать использование CGLayer
s.
Так что я сейчас делаю, чтобы отобразить путь внутри CGContextRef
, который я получаю от вызова CGLayerGetContext
.Вот основной набросок того, что я делаю:
// rect comes from the drawRect: method
layer = CGLayerCreateWithContext(context, rect.size, NULL);
layerContext = CGLayerGetContext(layer);
CGContextSetLineCap(layerContext, kCGLineCapRound);
// Set the line styles
CGContextSetLineJoin(layerContext, kCGLineJoinRound);
CGContextSetLineWidth(layerContext, 1.0);
CGContextSetStrokeColorWithColor(layerContext, [UIColor blackColor].CGColor);
// Create a mutable path
path = CGPathCreateMutable();
// Move to start point
//...
for (int i = 0; i < points.count; i++) {
// compute controlPoint and anchorPoint
//...
CGPathAddQuadCurveToPoint(path,
nil,
controlPoint.x,
controlPoint.y,
anchorPoint.x,
anchorPoint.y);
}
// Stroke the path
CGContextAddPath(layerContext, path);
CGContextStrokePath(layerContext);
// Add the layer to the main context
CGContextDrawLayerAtPoint(context, CGPointZero, layer);
Теперь я получаю хорошую производительность рисования, но мои линии чрезвычайно зазубренны и не выглядят сглаженными.Я пытался добавить
CGContextSetShouldAntialias(layerContext, YES);
CGContextSetAllowsAntialiasing(layerContext, YES);
CGContextSetInterpolationQuality(layerContext, kCGInterpolationHigh);
к коду выше, но безрезультатно.Я даже установил свойства сглаживания на основной context
без изменений.Я сделал снимки экрана с теми же результатами кода, но со вторым изображением, являющимся изображением, созданным из рисунка в CGLayer
.Как вы можете видеть, он действительно зазубренный, несмотря на то, что код тот же, просто рисует в layerContext
.Как сделать так, чтобы линии в CGLayer
были плавными?
![jagged lines](https://i.stack.imgur.com/g1EWk.png)