Прежде чем начать работу с графикой, программа должна
выделить себе специальную структуру данных и получить указатель на нее. Эта
структура называется графическим контекстом (Graphic Context (GC)).
Указатель на GC используется в качестве одного из параметров при вызове
"рисующих" функций X. Графический контекст содержит ряд атрибутов, влияющих
на отображение объектов: текста, линий, фигур и др. Выделенный GC должен быть
освобожден до завершения работы программы.
Графический контекст создается процедурой
XCreateGC(), имеющей следующий прототип:
Первый аргумент - это указатель на структуру типа
TDisplay, который программа
получает после вызова
XOpenDisplay(); второй - идентификатор окна (или карты
пикселей), в котором программа будет рисовать; третий - битовая маска,
определяющая, какие атрибуты GC задаются; последний аргумент - структура типа
TXGCValues, определяемая
следующим образом:
Значения полей данной структуры будут объяснены ниже.
Каждому из них соответствует бит в маске, которая передается в качестве
третьего параметра при вызове процедуры
XCreateGC(). Эти биты обозначаются символическими константами,
определенными в модуле x. Если
бит установлен, то значение соответствующего атрибута должно быть взято из
переданной XCreateGC()
структуры TXGCValues. Если бит
сброшен, то атрибут приникает значение по умолчанию.
Следующий пример показывает процесс создания графического
контекста, в котором устанавливаются два атрибута: цвет фона и цвет переднего
плана.
Вызов XCreateGC() - не единственный способ создания графического
контекста. Так, например, новый контекст может быть получен из уже
существующего GC с помощью XCopyGC().
Когда контекст порожден, его атрибуты могут изменяться процедурой
XChangeGC(). Например: