XCopyPlane(display, bitmap, win, gc, 0, 0, bitmap_width, bitmap_height, 100, 50, 1);
Мы могли также скопировать заданный прямоугольный фрагмент пиксельной карты вместо полного ее копирования. Последний параметр в функции XCopyPlane() определяет, какой слой (цветовую плоскость) исходного изображения мы хотим скопировать в целевое окно. Для битовых изображений всегда копируется плоскость номер 1.
Часто бывает необходимо создать неинициализированную пиксельную карту, чтобы в дальнейшем в ней можно было рисовать. Это полезно для графических редакторов (создание нового пустого "холста" вызовет создание новой пиксельной карты, в которой будет храниться изображение). Это полезно при чтении различных форматов изображений - мы загружаем графические данные в память, создаем на сервере пиксельную карту, а затем рисуем расшифрованные графические данные на этой пиксельной карте.
var
pixmap: TPixmap;
root_win: TWindow;
depth: longint;
root_win:= XDefaultRootWindow(display);
depth:= XDefaultDepth(display, XDefaultScreen(display));
pixmap:= XCreatePixmap(display, root_win, 30, 40, depth);
XDrawPoint(display, pixmap, gc, 15, 20);
После получения дескриптора пиксельной карты мы можем отобразить ее в некотором окне, используя функцию XCopyArea(). Эта функция позволяет указать устройство рисования (окно или даже другую пиксельную карту) и в какую позицию этого устройства пиксельная карта будет отображена.
XCopyArea(display, bitmap, win, gc, 0, 0, bitmap_width, bitmap_height, 100, 50);
Мы могли также скопировать заданный прямоугольный фрагмент пиксельной карты вместо полного ее копирования.
Отметим, что на одном и том же экране возможно создавать пиксельные карты различных глубин. Когда мы выполняем операции копирования (пиксельной карты в окно и т.п.), мы должны убедиться, что источник и приемник имеют одну и ту же глубину. Если их глубина различается, операция не удастся. Единственное исключение - копирование указанной битовой плоскости пиксельной карты с помощью показанной ранее функции XCopyPlane(). В этом случае мы можем скопировать указанную плоскость в окно-приемник - в действительности устанавливается указанный бит в цвете каждого копируемого пикселя. Это может быть использовано для создания забавных графических эффектов.
Наконец, когда все операции над данной пиксельной картой выполнены, ее необходимо освободить, чтобы освободить ресурсы Х сервера. Это делается с помощью функции XFreePixmap():
XFreePixmap(display, pixmap);