使用C++更改Xlib窗口的背景颜色

3

这是Linux系统。我创建了一个窗口,并希望将它的背景颜色更改为绿色。以下是我的代码:

Window xwin = XCreateSimpleWindow(dis, 
                                  DefaultRootWindow(dis), 
                                  0, 0, 
                                  500, 300, 
                                  0,
                                  WhitePixel(dis, 0),
                                  WhitePixel(dis, 0));
GC gc = XCreateGC(dis, xwin, 0, NULL);
XColor color;
Colormap colormap;
char green[] = "#00FF00";

colormap = DefaultColormap(dis, 0);
XParseColor(dis, colormap, green, &color);
XAllocColor(dis, colormap, &color);

XSetBackground(dis, gc, color.pixel);

XMapWindow(dis, xwin);
XFlush(dis);

我看到的窗口是白色的。在Linux中,使用X11能否更改窗口背景颜色?谢谢!
1个回答

6
如果您只想要绿色背景,那么XCreateSimpleWindow的最后一个参数就是背景颜色,可以将其设为绿色。
  XColor color;
  Colormap colormap;
  char green[] = "#00FF00";

  colormap = DefaultColormap(dis, 0);
  XParseColor(dis, colormap, green, &color);
  XAllocColor(dis, colormap, &color);


  Window xwin = XCreateSimpleWindow(dis, 
                   DefaultRootWindow(dis), 
                   0, 0, 
                   500, 300, 
                   0,
                   WhitePixel(dis, 0),
                   color.pixel);

XMapWindow(dis, xwin);
XFlush(dis);

这篇帖子有点旧了,但我想说OP问了一些不同的问题;你的回答并没有说明在初始设置之后更改背景颜色的可能性,这是一件可能非常有用的事情。如果您能更详细地阐述这个方面,那就太好了。 - phranz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接