This is my code:
int main()
{
Display *d = XOpenDisplay(0);
unsigned int bitmap_width, bitmap_height;
int x, y;
Pixmap bitmap;
if ( d )
{
Window w = XCreateWindow(d, DefaultRootWindow(d), 0, 0, 400,
400, 0, CopyFromParent, CopyFromParent,CopyFromParent, 0, 0);
GC gc = XCreateGC ( d, w, 0 , NULL );
int rc = XReadBitmapFile(d, w,
"1.bmp",
&bitmap_width, &bitmap_height,
&bitmap,
&x, &y);
XCopyPlane(d, bitmap, w, gc,0, 0, bitmap_width, bitmap_height,0, 0, 1);
XMapWindow(d, w);
XFlush(d);
sleep(10);
}
return 0;
}
But window is clear. I do not understand why it is not working. Where did I make mistake?
Generally you create your own loader to grab the pixels out of whatever image format you need.
Then, you use
XCreateImageto make anXImage, which you put, usingXPutImage, on an offscreen pixmap you generate withXCreatePixmap. Once you have your pixmap, you paint it to the window withXCopyArea. You must re-copy the image on any expose events.