2011-08-06 7 views
4

iPadのdrawRectメソッドのココア表示で、いくつかCGPathsを描画しています。私はUIGraphicsGetCurrentContext()の文脈にそれらを直接描画し始めましたが、私のパスが本当に長くなったときにパフォーマンスが低下しました。他の質問severalに基づいて、私はCGLayerを使用して探し始めた。CGLayerとアンチエイリアスCGPaths

私は現在、内部のパスをレンダリングすることをやっています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にアンチエイリアスプロパティを設定しました。同じコード結果のスクリーンショットを撮ったが、2番目のイメージはCGLayerの描画から作成されたイメージである。ご覧のとおり、コードが同じでも、ギザギザです。layerContextに描画されています。 CGLayerの行を滑らかにするにはどうすればよいですか? jagged lines

答えて

2

smooth lines

は私は反対アンチエイリアスには何もありませんでしたので、第二の画像はアンチエイリアスではない理由を発見しました。背景は空で、アンチエイリアスは機能しませんでした。完全に透明なビューの境界に大きな矩形を作成すると、線はアンチエイリアスで描画されます。ただし、パフォーマンスは強制終了されます。このルートに行かない方がいいです。

+0

こんにちは@Streeter、私はまた、CgLayer isssueで立ち往生しているとCgLayerに描画する方法を把握することができません、私はこれについての質問を投稿している、見てくださいhttp://stackoverflow.com/questions/ 11341763/how-to-use-cglayer-for-optimal-drawing – Ranjit