iphone - para - Efecto de relieve en Core Graphics
como funciona clips de apple (3)
Parece que estás dibujando el camino usando una serie de círculos.
El problema es que has configurado la sombra en los puntos individuales, y es por eso que obtienes los efectos extraños.
Una posible solución: no coloques una sombra sobre los puntos, pon el camino: duplica la línea que dibujaste, dibujala en un color diferente, colócala y colócala debajo de tu línea actual.
Alternativamente, si está utilizando capas, eche un vistazo a las rutas de sombra.
Estoy de nuevo aquí con dos preguntas, ambas interrelacionadas
- Quiero dibujar líneas en relieve con gráficos centrales. ¿Puede alguien sugerirme cómo dar sombras internas a líneas dibujadas en eventos táctiles?
- Incluso para dibujar sombras externas. Sombra dibujada se superpone en el medio. y la línea dibujada con colores que no sean negros es como un gusano. ¿Alguien puede ayudarme? La siguiente imagen ilustra lo que quiero explicar para la Pregunta 2: Las sombras creadas no son uniformes. Se oscurecen en algunos puntos
Estoy agregando el código que estoy usando para dibujar líneas.
for (int i=0; i<[currentPath count]; i++)
{
CGPoint mid1 = [[self midPoint:[currentPath objectAtIndex:i+1] :[currentPath objectAtIndex:i]] CGPointValue];
CGPoint mid2 = [[self midPoint:[currentPath objectAtIndex:i+2] :[currentPath objectAtIndex:i+1]] CGPointValue];
CGContextMoveToPoint(context, mid1.x, mid1.y);
CGContextAddQuadCurveToPoint(context, [[currentPath objectAtIndex:i+1] CGPointValue].x, [[currentPath objectAtIndex:i+1] CGPointValue].y, mid2.x, mid2.y);
CGContextSetShadow(context, CGSizeMake(-2, -2), 3);
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetStrokeColorWithColor(context,[color CGColor]);
CGContextSetLineWidth(context, linewidth);
CGContextStrokePath(context);
i+=2;
}
Encontré mi solución ... El problema fue muy tonto ... Estaba avivando el camino en cada iteración que creaba el problema ... Ahora puedo dibujar incluso con alfa menos de 1 ...
CGContextStrokePath(context);
Esta línea sale para el bucle ... Y todo está funcionando bien ahora :)
Para las sombras superpuestas, desea una capa de transparencia para componerlas primero. Consulte Capas de transparencia en la Guía de programación 2D de cuarzo.