在 Xlib 中使用原始 RGB 颜色可以吗?

Is it ok to use raw RGB for colors in Xlib?

在 Xlib 中有一个名为 XSetWindowBorder() 的函数,它接受颜色值(无符号长整型)。在文档中,它谈到了“颜色映射中的条目”和其他内容,但我只是用正常编码的 RGB 颜色进行了尝试,它似乎可以工作。这有什么潜在的陷阱?

我的编码函数是:

unsigned long _RGB(int r,int g, int b)
{
  return b + (g<<8) + (r<<16);                                                                         
}

您的显示器可能使用真彩色(24 位深)视觉。在该视觉对象上,颜色图本质上实现了恒等映射:颜色图条目等于其索引。在 PseudoColor 或 StaticColor 视觉效果上,情况不再如此。您的程序在低于 24 位的视觉对象上将无法运行或无法正常运行。