2017-02-01 7 views
1

私は境界線と円を描くようにCGrectを使用していますが、私はここで、円のシャープな境界線を取得していないが、私のコードです:CGrectで鋭い境界線を作る方法は?

CGRect rect = CGRectMake(lastPoint1.x - CircleRadius ,lastPoint1.y - CircleRadius,CircleDia,CircleDia); 
    CGContextSetFillColorWithColor(ctx, [Util_color getThemeColor].CGColor); 
    CGContextFillEllipseInRect(ctx, rect); 
    CGContextSetRGBStrokeColor(ctx, 255.0, 255.0, 255.0, 1.0); 
    CGContextStrokeEllipseInRect(ctx, rect); 
    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); 
    CGContextSetLineWidth(ctx, 3.0); 
    CGContextSetShouldAntialias(ctx, YES); 
    CGContextSetLineCap(cox,kCGLineCapRound); 

が、私はまだぼかしの境界線を取得! CGrectを使って鮮明な枠線を得る方法はありますか?

+0

少なくとも最初の行に 'CGRectIntegral'を使用しています。これは座標を整数ピクセルに丸めます。 http://stackoverflow.com/a/9975374/526547 – Cyrille

+0

を参照してください。ビューに適用されます。CGrectで適用したい –

+0

インテグラル座標はまったく間違った方法です。なぜ私の答えに載せたイラストを見てください。 – uliwitness

答えて

0

シャープな境界線によってOPが何を意味するかは、anti-aliasingが適用されていないものであると推測します。

CGContextSetShouldAntialias(ctx, NO); 
+0

まだありません –

2

ピクセル間に描画しています。説明と修正のためにここを参照してください:http://orangejuiceliberationfront.com/are-your-rectangles-blurry-pale-and-have-rounded-corners/

(これは私が最初にこの説明を書いているHow to get a 1 pixel line with NSBezierPath?の複製である)

+0

UIimageでサークルしたいのでレイヤーを使いたくない –

+0

"レイヤー"とはどういう意味ですか?そのブログの投稿はレイヤーではなく、Quartzの描画に関するものです。 – uliwitness

+0

NSBezierPathは元の画像ではなくUIImageviewにレイヤーを追加するときにレイヤーを使用し、UIimageで解決したいものは何ですか? –

関連する問題