2
그림에서 RGBA (실제로는 알파 채널을 신경 쓰지 않습니다) 값이 포함 된 벡터가 있습니다.이 그림을 xlib로 그릴 수 있습니다. 그래서 저는 XImage를 사용해야하고 하나를 얻으려면 XCreateImage을 사용할 필요가 있습니다.linux C++ XImage RGB <-> BGR?
XCreateImage에는 "char * data"가 필요하므로 먼저 벡터를 변환해야합니다. 화면에서
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);
내 사진이,
vector<unsigned char> picture;
cunsigned char *unsigneddata = &picture[0];
char *data;
data = (char*)unsigneddata;
을 그래서 지금은 내 그림을 그릴 "데이터"를 사용할 수 있습니다 : 무엇을 내가 뭘하는 것이 효율적인지는 모르겠지만, 그 작동 빨간색과 파란색 채널이 반전되었습니다. 내가 무언가를 엉망으로 만들거나 그것이 옳은지, 그리고 채널을 바꿔야 하는지를 나는 모른다. 스왑을해야한다면 어레이를 둘러싼 루프를 바꾸는 것 외에 다른 방법이 있습니까?
작동합니까? 'XCreateImage'는 두번째 파라미터로'Visual *'을 요구합니다. –
예, 영상이 창일 수 있습니다. 문제는 빨강 및 파랑 채널의 반전이지만 여전히 내 잘못인지 알 수 없음 –
데이터를 시각적으로 이해할 수있는 형식으로 변환해야합니다. 시각적 인 정보는'red_mask','green_mask','blue_mask' 필드 ('XVisualInfo' 구조체 참조)를 가지고 있으며이 마스크에 따라 각 픽셀의 R, G, B를 설정해야합니다. 예, 이것은 각 픽셀을 검토하고 변환하는 것을 의미합니다. 그러나 비주얼이 창이라면 어떻게 할 지 모르겠다. 그렇지 않으면 그 비주얼이 창과 관련된다는 것은 무엇을 의미 하는가? –