4

Photo Booth と同様の Mac ココア アプリケーションでスクリーン フラッシュ効果を再現しようとしています。

画面に白いレイヤーが重ねられ、画面の明るさが非常に明るくなり、再び暗くなります。

これを Cocoa で再現する方法について誰かアドバイスをいただけますか?

ありがとう

4

2 に答える 2

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

}
于 2013-07-08T16:07:22.483 に答える
1

全画面ウィンドウを作成するには、このチュートリアルをご覧ください。白くして、Core Animation を使用してフェードインおよびフェードアウトするだけです。例:[[MyFullScreenWindow animator] setAlphaValue:0.0];フェードアウトします。

于 2011-01-19T01:33:08.743 に答える