【发布时间】:2011-03-07 10:21:13
【问题描述】:
我正在尝试使用 Cocoa 绘制形状的反射。我已经应用了一个 NSAffineTransform 并成功地重绘了形状,但现在我不知道如何在它上面绘制一个 alpha 蒙版。我正在使用NSCompositeDestinationOut 操作,但它给了我一个不需要的结果:alt text http://img687.imageshack.us/img687/2417/capturedcran20100623094.png
我不完全确定如何解决这个问题 - 我需要让渐变仅充当 Alpha 蒙版,实际上不会显示。我是否使用了错误的合成模式?
谢谢!如果需要,这是渐变代码:
- (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];
}
【问题讨论】:
-
您需要创建一个蒙版图像,将其与源图像合成,然后绘制结果图像。 developer.apple.com/iphone/library/documentation/…
-
但是我屏蔽的对象不是图像,它是一个动态绘制的控件。有什么方法可以让它绘制到图像上并使用它?
标签: cocoa drawing gradient compositing