2012-07-28 4 views
0

UIBezierpath를 사용하여 둥근 모양의 rect를 만들었습니다. rect의 둥근 모서리에는 일종의 앨리어싱 효과가있는 문제가 하나뿐입니다. 나는이 두 가지 문제 중 하나가 될 수 있습니다 볼 수 있듯이 지금까지UIBezierpath와 RoundedRect의 앤티 앨리어싱

CGFloat radius = 12; 
CGRect frame1 = CGRectMake(self.bounds.origin.x, self.bounds.origin.y+(self.bounds.size.height/heightFactor), self.bounds.size.width-shadowConst, self.bounds.size.height-(self.bounds.size.height/heightFactor)-shadowConst); 

CGRect frame2 = CGRectMake(self.bounds.size.width-(self.bounds.size.width/widthFactor), self.bounds.origin.y+(self.bounds.size.height/(heightFactor*2)), (self.bounds.size.width/widthFactor)-shadowConst, (self.bounds.size.height/heightFactor)); 

UIBezierPath *result = 
[UIBezierPath bezierPathWithRoundedRect: frame1 cornerRadius:radius]; 
[result appendPath: 
[UIBezierPath bezierPathWithRoundedRect: frame2 cornerRadius:radius]]; 
[result fill]; 
[result addClip]; 
CGContextDrawLinearGradient(context, gradient2, CGPointMake(0, 0), CGPointMake(0, self.bounds.size.height), 0); 

답변

0

: 다음은이 같은 둥근 RECT를 만들 사진 Aliasing on corners

입니다

당신은 색상을 그리고있는 그 결합되면 이상하게 보입니다. 회색 위에 밝은 녹색이 이상하게 보일 수 있습니다.

또한 shadowConst 및 heightFactor의 경우 프레임의 크기 또는 위치가 0.5가되도록 분할하지 않도록주의하십시오. 따라서 예를 들어, 너비가 원하는 크기가 [size].5이면 흐리게 표시됩니다. 프레임의 x 또는 y 값을 [value].5

+0

으로 설정하면 마찬가지입니다. 색상없이 그려 보았습니다. 같은 앨리어싱이 일어나고 있습니다 ... 저는 상수와 무슨 뜻인지 정말로 모르겠습니다. ShadowConst는 값이 3 인 정수이고 heightFactor는 정수 상수이기도합니다. 어떻게 이것이 앨리어싱을 일으킬 수 있습니까? 편집 : 내 생각 엔 드로잉 메커니즘에서 내부적 인 것이라고 생각합니다. – arnoapp

+0

죄송합니다. 지금까지 귀하의 의견을 보지 못했습니다. 하지만 당신이 그것을 받아 본, 그래서 당신이 내 팁을 기반으로 알아 냈다고 생각해. :) – runmad

관련 문제