2011-07-07 73 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將它繪製到窗口中。您必須在任何暴露事件中重新複製圖像。