【发布时间】:2019-11-03 00:43:51
【问题描述】:
我刚刚使用 X11 库开始了我的第一个程序。首先,我只是尝试从xrdb 中定义的用户配色方案中访问颜色。例如,在我的~/.Xresources 我有类似的东西:
*color8: #073642
*color0: #002b36
我还验证了当我运行xrdb -query 时会显示这些颜色。到目前为止,在我的 C 程序中,我有:
#include <X11/Xlib.h>
#include <X11/Xresource.h>
int main (int argc, char *argv[])
{
Display* display = XOpenDisplay (0);
XrmDatabase xrdb = XrmGetDatabase (display);
XrmValue v;
Colormap cmap = DefaultColormap (display, DefaultScreen (display));
XColor screenColor;
XColor exactColor;
if (! XAllocNamedColor (display, cmap "color0", &screenColor, &exactColor))
printf ("ERROR\n");
printf ("%u %u %u\n", screenColor.red, screenColor.green, screenColor.blue);
return 0;
}
但是这个错误。那么我错过了什么?有没有更好的方法来做我想做的事情?谢谢!
【问题讨论】:
-
您需要使用
xrdb -merge或类似的方式让X 服务器查看这些值。 -
对,做到了。需要明确的是,这些自定义颜色会在我执行
xrdb -query时出现 -
Color0 不是命名颜色,它是资源数据库中的一个键。您需要从 xrdb 中显式获取相应的值,然后为其分配一个颜色。
-
您能详细说明一下吗?我的代码中需要更改什么?
-
你或多或少地选择班级。您可以尝试
"*"(任何课程)。类型是函数返回的,不需要推导。谷歌xrmgetresource color,你会得到一些有指导意义的代码示例。