X11: 将像素值转换为 RGB
X11: Convert Pixel value to RGB
我对 X11 和扩展 X11 应用程序比较陌生。我需要将 Pixel
类型变量中的颜色转换为其 RGB 分量。
我的理解是,这取决于应用程序的视觉效果。对于 TrueColor 和 DirectColor 视觉效果,我可以查看 XVisualInfo
并使用 bits_per_rgb
和 {red,green,blue}_mask
成员.
但是如何处理 伪彩色 或其他视觉效果?我需要的是
这样的函数
void PixelToRGB(Pixel p, XVisualInfo *v, uint16_t *r, uint16_t *g, uint16_t *b)
我正在阅读 Xlib 编程手册,但尚未找到有关如何实现此类功能的信息。
我没有做过 Xlib 编程,所以这是有根据的猜测,但你应该能够从有问题的 window 的 XWindowAttributes
中得到 ColorMap
,并且像素值将是颜色图中的索引。显然,查找是通过将像素填充到 XColor
并用它调用 XQueryColor
来完成的,这将填充 XColor
的 red
、green
和blue
个字段。我相信即使使用 DirectColor
和 TrueColor
视觉效果也应该这样做,因为颜色图可以包含诸如伽玛校正之类的东西,并且在DirectColor
视觉对象。
我对 X11 和扩展 X11 应用程序比较陌生。我需要将 Pixel
类型变量中的颜色转换为其 RGB 分量。
我的理解是,这取决于应用程序的视觉效果。对于 TrueColor 和 DirectColor 视觉效果,我可以查看 XVisualInfo
并使用 bits_per_rgb
和 {red,green,blue}_mask
成员.
但是如何处理 伪彩色 或其他视觉效果?我需要的是
这样的函数void PixelToRGB(Pixel p, XVisualInfo *v, uint16_t *r, uint16_t *g, uint16_t *b)
我正在阅读 Xlib 编程手册,但尚未找到有关如何实现此类功能的信息。
我没有做过 Xlib 编程,所以这是有根据的猜测,但你应该能够从有问题的 window 的 XWindowAttributes
中得到 ColorMap
,并且像素值将是颜色图中的索引。显然,查找是通过将像素填充到 XColor
并用它调用 XQueryColor
来完成的,这将填充 XColor
的 red
、green
和blue
个字段。我相信即使使用 DirectColor
和 TrueColor
视觉效果也应该这样做,因为颜色图可以包含诸如伽玛校正之类的东西,并且在DirectColor
视觉对象。