我正在尝试在类似于 Photo Booth 的 mac cocoa 应用程序中复制屏幕闪光效果。
屏幕上覆盖了一层白色,屏幕的亮度逐渐变亮,然后又变暗。
谁能给我一些关于如何在 Cocoa 中复制它的建议?
谢谢
我正在尝试在类似于 Photo Booth 的 mac cocoa 应用程序中复制屏幕闪光效果。
屏幕上覆盖了一层白色,屏幕的亮度逐渐变亮,然后又变暗。
谁能给我一些关于如何在 Cocoa 中复制它的建议?
谢谢
我建议使用 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);
}
您可以查看本教程以创建全屏窗口。只需将其设为白色并使用 Core Animation 淡入淡出即可。例如:[[MyFullScreenWindow animator] setAlphaValue:0.0];
将其淡出。