2015-10-31 77 views
0

我对X11比较新,并且扩展了X11应用程序。我需要将Pixel类型的变量中的颜色转换为其RGB组件。 我的理解是,这取决于应用程序的视觉效果。对于TrueColorDirectColor视觉效果我可以看看XVisualInfo并使用bits_per_rgb{red,green,blue}_mask成员。X11:将像素值转换为RGB

但是该怎么办PseudoColor或其他视觉?我需要的是一个函数,如

void PixelToRGB(Pixel p, XVisualInfo *v, uint16_t *r, uint16_t *g, uint16_t *b) 

我读的Xlib编程手册,但仍可能找到的信息如何实现这样的功能。

回答

1

我还没有完成Xlib编程,所以这是有教育意义的猜测,但是您应该能够从XWindowAttributes得到ColorMap,并且该像素值将成为色彩映射的索引。显然,查找是通过将像素填充到XColor并使用它调用XQueryColor来完成的,这将填充XColorred,​​和blue字段。我相信这也应该在DirectColorTrueColor视觉效果中完成,因为色彩映射可以包含诸如伽玛校正之类的东西,并且可能包含奇怪的事物(奇怪的颜色循环效应?),例如DirectColor视觉效果。

+0

'XQueryColor'正是我所需要的。谢谢! – Jens