Снимок экрана на Linux

Довольно простая реализация создания скриншота в Linux. В примере делается снимок всего экрана , но можно сделать скриншот любой области , правда придется немного поправить исходник. Скриншот не сохраняется в файл , а просто выводится в окно. При желании , я думаю любой сможет добавить BSAVE и сохранить в bmp. Я тестировал на Linux Mint 64-bit.

Платформа: Linux
Автор: Станислав Будинов

 

#undef Window
#INCLUDE "X11/Xlib.bi"
#INCLUDE "X11/Xutil.bi"
#INCLIB "X11"
#INCLUDE "crt.bi"

Dim As Display Ptr pDisplay = XOpenDisplay(0)

Dim As Window pRoot = DefaultRootWindow(pDisplay)

Dim As XWindowAttributes TAttributes(0) 

XGetWindowAttributes(pDisplay, pRoot, @TAttributes(0))

Dim As Integer iWidth = TAttributes(0).width

Dim As Integer iHeight = TAttributes(0).height

Dim As XImage Ptr xImg = XGetImage(pDisplay, pRoot, 0, 0 , iWidth, iHeight, AllPlanes, ZPixmap)

Screenres iWidth , iHeight , 32

Dim pImage As Any Ptr 

Dim pPixels As Any Ptr 

pImage = Imagecreate(iWidth , iHeight , 32)

ImageInfo( pImage,,,,,pPixels )

memcpy(pPixels, xImg->Data, iWidth * iHeight * 4)

Put (0,0),pImage

XDestroyImage(xImg)

XCloseDisplay(pDisplay)

Sleep