2013-03-18 2 views
0

Привет, нам нужно сделать снимок текущего окна приложения при нажатии кнопки. Это должно быть сделано автоматически в коде. Для этого мы использовали библиотеку Imlib2 и использовали следующие файлы api imlib_create_image_from_drawable и imlib_copy_drawable_to_image. Это код, который мы использовали для создания моментальных снимков, но он не работает, пожалуйста, помогите нам поблагодарить заранее.Нужно делать снимки в X11using библиотеке imLib2

Imlib_Image buffer; 
buffer = imlib_create_image_from_drawable(pixmap, 0, 0, glb.windowWidth, glb.windowHeight, 0); 
imlib_context_set_image(buffer); 
imlib_copy_drawable_to_image(pixmap, 0, 0, glb.windowWidth, glb.windowHeight, 0, 0, 0); 
imlib_context_set_image(buffer); 
imlib_image_set_format("png"); 
imlib_save_image("screenshot"); 
imlib_free_image(); 
+0

«это не работает». Вы забыли вставить описание проблемы после этих слов. –

+0

Наша задача - делать снимки запущенного приложения. Для этого мы написали вышеприведенный код. Сначала я создал Pixmap и скопировал наше окно приложения в Pixmap с помощью XCopyArea api. Затем передается переменная Pixmap в вышеуказанную функцию. В этой функции я создал изображение из этой pixmap и установил текущее изображение и скопировал pixmap в изображение. Снова установите изображение и формат для сохранения изображения и, наконец, сохраните изображение с помощью imlib_save_image api, но он не работает. не могли бы вы помочь мне в том, что я сделал неправильно в приведенном выше примере? Заранее спасибо – VigneshK

+0

Ваше описание кода гораздо менее полезно, чем сам код. Вы забыли вставить описание проблемы еще раз. Надеюсь, кто-то может вам помочь. –

ответ

2

спасибо. Я скорректировал свой код, и я могу сделать снимок запуска приложения, используя библиотеку Imlib. В вышеизложенном я забываю установить drawable. Это скорректированный код, и он отлично работает

Imlib_Image buffer; 

buffer = imlib_create_image(glb.windowWidth, glb.windowHeight); 
imlib_context_set_image(buffer); 
imlib_context_set_display(display); 
imlib_context_set_visual(DefaultVisual(display, 0)); 
imlib_context_set_drawable(window); 
imlib_copy_drawable_to_image(0, 0, 0, glb.windowWidth, glb.windowHeight, 0, 0, 1); 
imlib_context_set_image(buffer); 
imlib_image_set_format("png"); 
imlib_save_image("screenshot"); 
imlib_free_image(); 
Смежные вопросы