Próbuję narysować odbicie kształtu za pomocą kakao. Zastosowałem już NSAffineTransform i poprawnie przerysowałem kształt, ale teraz nie mogę wymyślić, jak narysować na nim maskę alfa. Używam operację NSCompositeDestinationOut
, ale to daje mi niechcianej wynik: alt text http://img687.imageshack.us/img687/2417/capturedcran20100623094.pngKakao: używanie NSGradient jako maski do rysowania poniżej
Nie jestem do końca pewien, jak to naprawić - Muszę zrobić to więc gradient działa jedynie jako maski alfa i nie jest faktycznie wyświetlany. Czy używam niewłaściwego trybu compositing?
Dzięki! Oto kod gradientu w razie potrzeby:
- (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];
}
Musisz utworzyć obraz maski, kompozytowe, które z obrazu źródłowego, a następnie narysować wynikowy obraz. http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_images/dq_images.html – hooleyhoop
Ale obiekt, który maskuję, nie jest obrazem, jest dynamicznie rysowane. Czy istnieje sposób, w jaki mogę go narysować do obrazu i użyć go? –