Cocoa を使用して形状の反射を描画しようとしています。既に NSAffineTransform を適用してシェイプを正常に再描画しましたが、その上にアルファ マスクを描画する方法がわかりません。操作を使用してNSCompositeDestinationOut
いますが、望ましくない結果が得られます:代替テキスト http://img687.imageshack.us/img687/2417/capturedcran20100623094.png
これを修正する方法が正確にはわかりません。グラデーションがアルファ マスクとしてのみ機能し、実際には表示されないようにする必要があります。間違った合成モードを使用していませんか?
ありがとう!必要に応じてグラデーション コードを次に示します。
- (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];
}