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

Jor*_*anC 4 macos cocoa brightness

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

屏幕上会叠加一个白色层,屏幕亮度会变亮,然后再次下降.

谁能给我一些关于如何在Cocoa中复制它的建议?

谢谢

tie*_*her 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);

}
Run Code Online (Sandbox Code Playgroud)


nos*_*e25 1

您可以查看教程来创建全屏窗口。只需将其设置为白色并使用核心动画使其淡入和淡出即可。例如:[[MyFullScreenWindow animator] setAlphaValue:0.0];将淡出。