5

私は何時間もウェブを検索してきましたが、何も見つかりませんでした。

マウスポインターが現在あるピクセルの色を取得する方法を知りたいです。コンソール アプリケーションをプログラムしたので、オーバーレイなどのウィンドウがありません。

詳細: プログラムをビルドして実行すると ( cmd+r )、マウス ポインターが現在ある色のコンソール ログが表示されます。それは可能ですか?

回答ありがとうございます。

こんにちは、ダニエル

PS: 私はドイツ出身です。

4

1 に答える 1

10

この質問と回答を出発点として使用すると、これは完全に機能するコマンド ライン プログラムになります。Cocoa Framework へのリンクも必要です。

#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>

int main(int argc, const char * argv[])
{
    @autoreleasepool {

        // Grab the current mouse location.
        NSPoint mouseLoc = [NSEvent mouseLocation];

        // Grab the display for said mouse location.
        uint32_t count = 0;
        CGDirectDisplayID displayForPoint;
        if (CGGetDisplaysWithPoint(NSPointToCGPoint(mouseLoc), 1, &displayForPoint, &count) != kCGErrorSuccess)
        {
            NSLog(@"Oops.");
            return 0;
        }

        // Grab the color on said display at said mouse location.
        CGImageRef image = CGDisplayCreateImageForRect(displayForPoint, CGRectMake(mouseLoc.x, mouseLoc.y, 1, 1));
        NSBitmapImageRep* bitmap = [[NSBitmapImageRep alloc] initWithCGImage:image];
        CGImageRelease(image);
        NSColor* color = [bitmap colorAtX:0 y:0];
        NSLog(@"%@", color);
        [bitmap release];
    }
    return 0;
}

実行を続けたい場合は、実行ループを作成して駆動するための追加の手段を講じる必要があります。

于 2012-07-31T18:53:32.423 に答える