Suavizado de UIBezierpath con RoundedRect

Creé un rect redondeado con UIBezierpath que funciona muy bien para mí. Solo hay un problema: los bordes redondeados del rectángulo tienen una especie de efecto de alias. aquí hay una foto Aliasing en las esquinas

Creo el rect redondeado así:

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);

preguntado el 28 de julio de 12 a las 16:07

1 Respuestas

Por lo que puedo ver, podría ser uno de dos problemas:

Estás dibujando con colores que parecen extraños cuando se combinan. El verde brillante encima del gris puede hacer que se vea raro.

Además, para su shadowConst y heightFactor, tenga cuidado de no dividir para que el tamaño o la ubicación del marco sea 0.5. Entonces, por ejemplo, si cualquiera que sea el tamaño que desea para el ancho es igual [size].5, dibujará un lado borroso. Lo mismo si establece el valor x o y para el marco en [value].5

Respondido 28 Jul 12, 17:07

Traté de dibujarlo sin el color. Está ocurriendo el mismo aliasing... Realmente no entiendo a qué te refieres con las constantes. ShadowConst es solo un entero con el valor de 3 y heightFactor también es una constante entera. ¿Cómo podría esto causar el aliasing? editar: supongo que es algo interno en el mecanismo de dibujo. - arnoapp

Lo siento, no había visto tu comentario hasta ahora. Pero vi que lo aceptaste, así que creo que lo averiguaste según mi consejo :) - enloquecido

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.