Sto provando a disegnare il riflesso di una forma utilizzando Cocoa. Ho già applicato un NSAffineTransform e ridisegnato la forma con successo, ma ora non riesco a capire come disegnare una maschera alfa su di esso. Sto utilizzando un'operazione NSCompositeDestinationOut
, ma mi sta dando un risultato indesiderato: alt text http://img687.imageshack.us/img687/2417/capturedcran20100623094.pngCacao: Utilizzo di un NSGradient come maschera per disegnare sotto di esso
io non sono esattamente sicuro di come risolvere questo problema - ho bisogno di farlo così il gradiente agisce solo come una maschera alfa e non è effettivamente visualizzato. Sto usando la modalità compositing sbagliata?
Grazie! Ecco il codice gradiente, se necessario:
- (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];
}
È necessario creare un'immagine maschera, composita che la propria immagine originale con, quindi disegnare l'immagine risultante. http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_images/dq_images.html – hooleyhoop
Ma l'oggetto che sto mascherando non è un'immagine, è un controllo disegnato in modo dinamico. C'è un modo per ottenerlo per disegnare un'immagine e usarla? –