4

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

屏幕上覆盖了一层白色,屏幕的亮度逐渐变亮,然后又变暗。

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

谢谢

4

2 回答 2

6

我建议使用 Quartz Display Services 的 CGDisplayFade API。它非常易于使用,不需要使用伪造的全屏窗口或视图进行“黑客攻击”。

见这里:石英显示服务参考

一个简单的实现如下所示:

-(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);

}
于 2013-07-08T16:07:22.483 回答
1

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

于 2011-01-19T01:33:08.743 回答