如何使用Xlib从窗口上的文件中绘制图像

时间:2011-07-07 10:36:33

标签: image x11 xlib

这是我的代码:

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;
}

但是窗口很清楚。我不明白为什么它不起作用。我在哪里弄错了?

1 个答案:

答案 0 :(得分:5)

通常,您可以创建自己的加载程序,以便从您需要的任何图像格式中获取像素。

然后,您使用XCreateImage制作一个XImage,使用XPutImage在您使用XCreatePixmap生成的屏幕外像素图上。获得像素图后,将其绘制到XCopyArea的窗口。您必须在任何公开事件上重新复制图像。