2

画像からの RGBA (実際にはアルファ チャネルは気にしません) 値を含むベクターがあり、この画像を 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);

画面上の私の写真には、赤と青のチャンネルが反転しています。何かを台無しにしたのか、それとも正しいのか、チャンネルを交換する必要があるのか​​ わかりません。スワップする必要がある場合は、配列をループしてスワップする以外に別の方法がありますか?

4

1 に答える 1