所以,这基本上是我很好奇的:
有任何想法吗?也欢迎指出我正确的方向。
提示 :我对原生的 Objective-C/Cocoa 方法更感兴趣。
最佳答案
基本上,DigitalColor Meter 获取鼠标坐标,在该区域周围获取 CGImageRef 屏幕截图,然后访问原始像素数据以计算 RGB 值。
您可以使用 nm
命令发现应用程序调用了哪些 API。在这种情况下:nm /Applications/Utilities/DigitalColor\ Meter.app/Contents/MacOS/DigitalColor\ Meter
这揭示了一些有趣的调用:
U _CGDisplayBounds
U _CGGetDisplaysWithPoint
U _CGSCaptureWindowsContentsToRectWithOptions
U _CGSCurrentInputPointerPosition
U _CGSGetOnScreenWindowCount
U _CGSGetOnScreenWindowList
CGS* 例程是私有(private) SPI - 从好的方面来说,有一个名为
CGWindowListCreateImage()
的公共(public) API 等价物拥有 CGImageRef 后,您可以使用以下方法访问原始像素数据:
CGImageGetDataProvider
CGDataProviderCopyData