2011-01-05 2 views
4

Я пытаюсь воспроизвести эффект вспышки экрана в приложении mac cocoa, аналогичном приложению для фотобумаги.Реплицировать фотоснимок экрана в какао

Белый слой накладывается на экран, и яркость экрана очень яркая, а затем снова вниз.

Может ли кто-нибудь дать мне несколько советов о том, как это можно воспроизвести в какао?

Благодаря

ответ

1

Вы могли бы взглянуть на this учебник для создания полного окна экрана. Просто сделайте его белым и используйте Core Animation, чтобы угаснуть его. Например: [[MyFullScreenWindow animator] setAlphaValue:0.0]; исчезнет.

6

Я предлагаю использовать API CGDisplayFade для сервисов отображения кварца. Он очень прост в использовании и не требуется «взлом» с поддельными полноэкранными окнами или представлениями.

Смотрите здесь: 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); 

}