5

だから、これは基本的に私が興味を持っていることです:

  • この小さなツールは、どのようにしてマウスの下の領域(および特定のピクセル)を取得しますか?
  • 次に、選択したポイントのRGB値をどのように分析しますか?

何か案は?私を正しい方向に向けることも歓迎されます。


ヒントネイティブのObjective-C/Cocoaアプローチにもっと興味があります。

4

1 に答える 1

2

基本的に、DigitalColor Meterはマウス座標を取得し、その領域の周囲のCGImageRefスクリーンショットを取得してから、生のピクセルデータにアクセスしてRGB値を計算します。

コマンドを使用して、アプリケーションが呼び出すAPIを見つけることができますnm。この場合:

nm /Applications/Utilities/DigitalColor\ Meter.app/Contents/MacOS/DigitalColor\ Meter

これはいくつかの興味深い呼び出しを明らかにします:

U _CGDisplayBounds
U _CGGetDisplaysWithPoint
U _CGSCaptureWindowsContentsToRectWithOptions
U _CGSCurrentInputPointerPosition
U _CGSGetOnScreenWindowCount
U _CGSGetOnScreenWindowList

CGS *ルーチンはプライベートSPIです-明るい面では、パブリックAPIと同等のものがありますCGWindowListCreateImage()

CGImageRefを取得したら、次を使用して生のピクセルデータにアクセスできます。

CGImageGetDataProvider
CGDataProviderCopyData
于 2012-09-07T00:13:10.637 に答える