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 XCreateImage to make an XImage, which you put, using XPutImage, on an offscreen pixmap you generate with XCreatePixmap. Once you have your pixmap, you paint it to the window with XCopyArea. You must re-copy the image on any expose events.
来源:https://stackoverflow.com/questions/6609281/how-to-draw-an-image-from-file-on-window-with-xlib