2012-07-28 277 views
0

我使用UIBezierpath创建了一个圆角矩形,这对我非常有用。只有一个问题,矩形的圆边具有一种混叠效果。 这里是一个图片Aliasing on corners使用RoundedRect对UIBezierpath进行抗锯齿

我创建了圆角的矩形这样的:

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

至于我可以看到它可能是两个问题之一:

你颜色绘制结合时显得很奇怪。灰色的亮绿色可能会让它看起来很奇怪。

另外,对于你的shadowConst和heightFactor,要小心你没有分割大小,或者框架的位置是0.5。因此,例如,如果无论您想要的宽度大小是否等于[size].5,它都会画出模糊的一面。如果将帧的x或y值设置为[value].5

+0

我也试图在没有颜色的情况下绘制它。同样的锯齿正在发生... 我不太明白你对常数的含义。 ShadowConst只是一个整数,其值为3,heightFactor也是一个整数常量。这怎么会导致别名? 编辑:我的猜测是它是绘图机制内部的东西。 – arnoapp 2012-07-28 17:21:32

+0

抱歉,直到现在才看到您的评论。但看到你接受了它,所以我认为你基于我的提示找出了它:) – runmad 2012-08-08 22:27:15