Photo Booth と同様の Mac ココア アプリケーションでスクリーン フラッシュ効果を再現しようとしています。
画面に白いレイヤーが重ねられ、画面の明るさが非常に明るくなり、再び暗くなります。
これを Cocoa で再現する方法について誰かアドバイスをいただけますか?
ありがとう
Photo Booth と同様の Mac ココア アプリケーションでスクリーン フラッシュ効果を再現しようとしています。
画面に白いレイヤーが重ねられ、画面の明るさが非常に明るくなり、再び暗くなります。
これを Cocoa で再現する方法について誰かアドバイスをいただけますか?
ありがとう
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);
}
全画面ウィンドウを作成するには、このチュートリアルをご覧ください。白くして、Core Animation を使用してフェードインおよびフェードアウトするだけです。例:[[MyFullScreenWindow animator] setAlphaValue:0.0];
フェードアウトします。