Как нарисовать изображение из файла в окне с 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 ответ

Решение

Как правило, вы создаете свой собственный загрузчик для захвата пикселей из любого формата изображения, который вам нужен.

Затем вы используете XCreateImage сделать XImage, который вы положили, используя XPutImage, на закадровом изображении, которое вы генерируете с XCreatePixmap, Как только у вас есть ваше растровое изображение, вы рисуете его в окно с XCopyArea, Вы должны повторно скопировать изображение на любых выставленных событиях.

Другие вопросы по тегам