我正在尝试在类似于Photo Booth的mac cocoa应用程序中复制屏幕闪光效果。
屏幕上覆盖了一层白色图层,屏幕亮度非常明亮,然后再次下降。
任何人都可以就如何在Cocoa中复制它给我一些建议吗?
由于
答案 0 :(得分:6)
我建议使用Quartz Display Services的CGDisplayFade API。 它非常易于使用,并且不需要使用虚假的全屏窗口或视图进行“黑客攻击”。
见这里:Quartz Display Services Reference
一个简单的实现看起来像这样:
-(void)flashScreenUsingFlashColor:(NSColor *)flashColor
inDuration:(NSTimeInterval)inDuration
outDuration:(NSTimeInterval)outDuration{
CGDisplayFadeReservationToken fadeToken;
NSColor *colorToUse = [flashColor colorUsingColorSpaceName: NSCalibratedRGBColorSpace];
CGError error = CGAcquireDisplayFadeReservation (inDuration + outDuration, &fadeToken);
if (error != kCGErrorSuccess){
NSLog(@"Error aquiring fade reservation. Will do nothing.");
return;
}
CGDisplayFade (fadeToken, inDuration, kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, colorToUse.redComponent, colorToUse.greenComponent, colorToUse.blueComponent, true);
CGDisplayFade (fadeToken, outDuration, kCGDisplayBlendSolidColor, kCGDisplayBlendNormal,colorToUse.redComponent, colorToUse.greenComponent, colorToUse.blueComponent, false);
}
答案 1 :(得分:1)
您可以查看this教程来创建全屏窗口。只需将其设为白色,然后使用Core Animation将其淡入淡出。例如:[[MyFullScreenWindow animator] setAlphaValue:0.0];
会淡出它。