用于创建 an 的 Xlib 函数XImage
是XCreateImage,其用法如下所示(您可以在链接中阅读完整说明):
XImage *XCreateImage(display, visual, depth, format, offset, data,
width, height, bitmap_pad, bytes_per_line)
其中与您的特定问题相关的参数是data,char*
它指向您使用 DevIL 加载图像数据的位置。有了这个,您应该能够按照您已经找到的其他答案中的步骤进行操作。
编辑添加:
您仍然需要告诉 DevIL 如何格式化您的图像数据,以便 XCreateImage 能够理解它。例如,以下一对函数调用将创建一个正确显示的 XImage:
ilCopyPixels(
0, 0, 0,
image_width, image_height, 1,
IL_BGRA, IL_UNSIGNED_BYTE,
image_data
);
// ...
XImage* background = XCreateImage(
display,
XDefaultVisual(display, XDefaultScreen(display)),
XDefaultDepth(display, XDefaultScreen(display)),
ZPixmap,
0,
image_data,
image_width,
image_height,
32,
0
);
,如果您改为选择IL_RGBA
,颜色将关闭!