スクリーンのキャプチャ
スクリーンを左右反転して表示するアプリケーションを作ろうとキャプチャ用のコードを探して見つけた。LeopardでQuartzにAPIが追加されたらしい。
以下コード。多分、Core ImageでCGImageを直接描画した方が早いのだろうけど。
- (IBAction)capture:(id)sender { CGImageRef screenShot = CGWindowListCreateImage(CGRectInfinite, kCGWindowListOptionOnScreenOnly, kCGNullWindowID, kCGWindowImageDefault); float width = CGImageGetWidth(screenShot), height = CGImageGetHeight(screenShot); NSImage *reversedScreenShot = [[NSImage alloc] initWithSize:NSMakeSize(width, height)]; [reversedScreenShot lockFocus]; CGContextRef context = [[NSGraphicsContext currentContext] graphicsPort]; CGContextScaleCTM(context, -1.0, 1.0); CGContextDrawImage(context, CGRectMake(0, 0, -width, height), screenShot); [reversedScreenShot unlockFocus]; [imageView setImage:reversedScreenShot]; [reversedScreenShot release]; CGImageRelease(screenShot); }