X11:将像素值转换为RGB

时间:2015-10-31 19:44:01

标签: c x11 rgb pixel xlib

我对X11相对较新,并扩展了X11应用程序。我需要将类型Pixel的变量中的颜色转换为RGB分量。 我的理解是,这取决于应用程序的视觉效果。对于 TrueColor DirectColor 视觉效果,我可以查看XVisualInfo并使用bits_per_rgb{red,green,blue}_mask成员。

但是如何为 PseudoColor 或其他视觉效果做些什么呢?我需要的是诸如

之类的功能
void PixelToRGB(Pixel p, XVisualInfo *v, uint16_t *r, uint16_t *g, uint16_t *b)

我正在阅读Xlib编程手册,但还无法找到如何实现此类功能的信息。

1 个答案:

答案 0 :(得分:2)

我还没有完成Xlib编程,所以这是有根据的猜测,但你应该能够从相关窗口的ColorMap获得XWindowAttributes,并且像素值将是一个索引进入彩色地图。显然,查找是通过将像素填充到XColor并使用它调用XQueryColor来完成的,这将填充XColor的{​​{1}},redgreen个字段。我相信即使使用blueDirectColor视觉效果也应该这样做,因为色彩图可以包含伽马校正等内容,也可能包含更奇怪的东西(奇怪的色彩循环效果?)一个TrueColor视觉效果。