在可可复制照片展位屏幕闪光

时间:2011-01-05 09:46:06

标签: cocoa macos brightness

我正在尝试在类似于Photo Booth的mac cocoa应用程序中复制屏幕闪光效果。

屏幕上覆盖了一层白色图层,屏幕亮度非常明亮,然后再次下降。

任何人都可以就如何在Cocoa中复制它给我一些建议吗?

由于

2 个答案:

答案 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];会淡出它。