2011-06-29 8 views
1

を描く私は丸みを帯びた角のある画像を作成するには、このコードを使用しています:は、パスのストロークと影(iOS版)

CGContextBeginPath(context); 
CGRect rect = CGRectMake(0, 0, imageObj.size.width, imageObj.size.height); 

    CGContextAddRect(context, rect); 


CGContextSaveGState(context); 
CGContextTranslateCTM (context, CGRectGetMinX(rect), CGRectGetMinY(rect)); 
CGContextScaleCTM (context, ovalWidth, ovalHeight); 
fw = CGRectGetWidth (rect)/ovalWidth; 
fh = CGRectGetHeight (rect)/ovalHeight; 
CGContextMoveToPoint(context, fw, fh/2); 
CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); 
CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); 
CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); 
CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); 
CGContextRestoreGState(context); 

CGContextClosePath(context); 
CGContextClip(context); 

CGContextDrawImage(context, CGRectMake(0, 0, w, h), imageObj.CGImage); 

は、どのように私は、脳卒中や影を追加することができますか?

は、これまで私のために動作しませんでした...

ありがとうございました!

+1

パス描画コードは、楕円を描くこと丸められた矩形ではありません。角の丸い四角形の場合は、角の半径を選択し、その円の半径を各円の半径として使用する必要があります。あるコーナーから次のコーナーまでの直線があなたに含まれます。 –

答えて

3

作成したパスを描画するには、CGContextStrokePathまたはCGContextFillPathを実行する必要があります。 (あなたがCGContextSetStrokeColorで第1ストロークの色を設定してください)、その後、あなたが影を作るためにCGContextSetShadowを使用することができ、ここでCoreGraphics影を記述したリンゴの開発者のページです:

http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_shadows/dq_shadows.html

+0

ありがとう、私はそれをうまくやってみました、それはラインを描いていない...それを行う方法の詳細については? –

+1

@Asaaf bあなたのパスがCGContextClipから描画しようとするとクリップされてしまう可能性はありますか? –

+2

@Assaf b:翻訳と縮尺を行うことに気付きましたが、何もせずにgrestoreします。あなたが実際に描くならば、あなたの絵は間違った場所にあり、大きすぎるでしょう。また、 'CGContextAddRect'はあなたに丸みのある何も与えません。 'AddRect'を投げ捨て、翻訳し、スケールします。 CGPathオブジェクトにパスを描画し、次に* gsaveを追加し、パスを追加し、影とストロークを設定してから、grestoreを追加してパスを再追加し、クリップして描画します。 –

関連する問題