首页 > 解决方案 > 可以在 Xlib 中使用原始 RGB 作为颜色吗?

问题描述

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

我的编码功能是:

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

标签: cxlib

解决方案


您的显示器可能使用 TrueColor(24 位深)视觉效果。在那个视觉上,颜色图本质上实现了一个身份映射:一个颜色图条目等于它的索引。在 PseudoColor 或 StaticColor 视觉效果上,这不再是真的了。您的程序在少于 24 位的视觉效果上将无法运行或无法正常运行。


推荐阅读