2011-07-07 37 views
0

这是我的代码:如何从文件上的窗口中绘制的图像与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; 
} 

但窗口是明确的。我不明白为什么它不起作用。我在哪里犯错?

+2

前两个错误包括未正确格式化您的代码,而不是使用您正在使用的编程语言来标记您的问题。 –

+0

你为什么要睡十秒? –

+0

对不起,我是新用户,忘记了格式。 10秒我睡觉查看窗口 – user725803

回答

4

一般来说,您可以创建自己的加载程序来从您需要的任何图像格式中获取像素。

然后,使用XCreateImage作出​​,你说,使用XPutImage,你有XCreatePixmap生成离屏像素映射。一旦你有了你的像素图,你可以用XCopyArea将它绘制到窗口中。您必须在任何暴露事件中重新复制图像。