我有一个包含图片中 RGBA(实际上我不关心 alpha 通道)值的向量,我想用 xlib 绘制这张图片。所以我必须使用一个 XImage 并得到一个我需要使用XCreateImage。
XCreateImage 需要“char *data”所以首先我需要转换我的向量。我不知道我在做什么是否有效,但这有效:
vector<unsigned char> picture;
cunsigned char *unsigneddata = &picture[0];
char *data;
data = (char*)unsigneddata;
所以现在我可以使用“数据”来绘制我的图片,
XImage *ximage = XCreateImage(display, visual /*errata : not window*/, 24, ZPixmap, 0, data, width, height, 32, 0);
XPutImage(dpy, *_w,gc,ximage,0,0,0,0,width,height);
我在屏幕上的图片有红色和蓝色通道反转。我不知道我是否搞砸了,或者它是否正确以及是否必须交换频道。如果我必须交换,除了在数组上循环来交换它们之外,还有另一种方法吗?