Ich versuche, die Form einer Reflexion mit Cocoa zu zeichnen. Ich habe bereits eine NSAffineTransform angewendet und die Form erfolgreich neu gezeichnet, aber jetzt kann ich nicht herausfinden, wie man eine Alpha-Maske darüber zeichnet. Ich verwende eine NSCompositeDestinationOut
Operation, aber es gibt mir ein unerwünschtes Ergebnis: alt text http://img687.imageshack.us/img687/2417/capturedcran20100623094.pngCocoa: Mit einem NSGradient als Maske zum Zeichnen darunter
Ich bin mir nicht ganz sicher, wie dies zu beheben - ich muß es machen so der Gradient wirkt nur als Alpha-Maske und ist nicht tatsächlich angezeigt. Verwende ich den falschen Compositing-Modus?
Danke! Hier ist der Gradient-Code, falls benötigt:
- (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];
}
Sie benötigen ein Maskenbild erstellen, zusammengesetzt, dass mit Ihrer Quellbild, dann ziehen das resultierende Bild. http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingquarz2d/dq_images/dq_images.html – hooleyhoop
Aber das Objekt, das ich maskiere, ist kein Bild, es ist ein dynamisch gezeichnetes Steuerelement. Kann ich es irgendwie schaffen, ein Bild zu zeichnen und es zu benutzen? –