Estoy tratando de dibujar la reflexión de una forma usando Cocoa. Ya he aplicado un NSAffineTransform y redibujado la forma con éxito, pero ahora no puedo imaginar cómo dibujar una máscara alfa sobre él. Estoy usando una operación NSCompositeDestinationOut
, pero me está dando un resultado no deseado: alt text http://img687.imageshack.us/img687/2417/capturedcran20100623094.pngCocoa: usando un NSGradient como máscara para dibujar debajo
No estoy exactamente seguro de cómo solucionar este problema - que necesito para que sea por lo que el gradiente de sólo actúa como una máscara alfa y no se realmente se muestra. ¿Estoy usando el modo de composición incorrecto?
Gracias! Aquí está el código de degradado si es necesario:
- (void)fadeOutRect:(NSRect)rect {
[NSGraphicsContext saveGraphicsState];
[[NSGraphicsContext currentContext] setCompositingOperation:NSCompositeDestinationOut];
NSGradient *gradient = [[NSGradient alloc] initWithColorsAndLocations:
[[NSColor blackColor] colorWithAlphaComponent:0.5], 0.0,
[[NSColor blackColor] colorWithAlphaComponent:1.0], 0.8, nil];
[gradient drawInRect:NSMakeRect(rect.origin.x, rect.origin.y + rect.size.height - (PILL_HEIGHT * 2),
rect.size.width, PILL_HEIGHT) angle:270];
[NSGraphicsContext restoreGraphicsState];
}
Es necesario crear una imagen de máscara, compuesta que la imagen de origen con, luego roba la imagen resultante. http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_images/dq_images.html – hooleyhoop
Pero el objeto que estoy enmascarando no es una imagen, es un control dibujado dinámicamente. ¿Hay alguna manera de que logre que dibuje una imagen y la use? –