2017-02-01 6 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에서 원하는 것은 솔루션입니다. –

관련 문제