Чтение онлайн

на главную - закладки

Жанры

Программирование в X Window средствами Free Pascal

Семериков С. А.

Шрифт:

XFree(child_windows);

end;

(* Транслируем локальные координаты в экранные, используя корневое окно как окно, относительно которого выполняется трансляция. Это работает потому, что корневое окно всегда занимает весь экран, и его левый верхний угол совпадает с левым верхним углом экрана *)

XTranslateCoordinates(display, parent_win, win_attr.root, xx, y, @scr_x, @scr_y, @child_win);

(* перемещаем окно влево *)

for i:=0 to 39 do begin

dec(scr_x,3);

XMoveWindow(display, win, scr_x, scr_y);

XFlush(display);

delay(20);

end;

(* перемещаем окно вниз *)

for i:=0 to 39 do begin

inc(scr_y,3);

XMoveWindow(display, win, scr_x, scr_y);

XFlush(display);

delay(20);

end;

(* перемещаем окно вправо *)

for i:=0 to 39 do begin

inc(scr_x,3);

XMoveWindow(display, win, scr_x, scr_y);

XFlush(display);

delay(20);

end;

(* перемещаем окно вверх *)

for i:=0 to 39 do begin

dec(scr_y,3);

XMoveWindow(display, win, scr_x, scr_y);

XFlush(display);

delay(20);

end;

 end;

 delay(1000);

 (* пример сворачивания и восстановления окна *)

 begin

(* сворачиваем окно *)

XIconifyWindow(display, win, XDefaultScreen(display));

XFlush(display);

delay(2000);

(* восстанавливаем окно *)

XMapWindow(display, win);

XFlush(display);

delay(2000);

 end;

 XFlush(display);

 (* короткая передышка *)

 delay(2000);

 (* закрываем соединение с Х сервером *)

 XCloseDisplay(display);

end.

1.1.10 Лабораторная работа #1 "Основные понятия Xlib"

1. Используя компилятор командной строки, выполните компиляцию примера из п. 1.1 и выполните полученную программу.

2. Настройте интегрированную среду Анюта для работы с кириллицей и выполните компиляцию в ней предыдущей программы.

3. На основе примера напишите программу, которая при нажатии клавиши мыши пишет сообщение Pressed, а при отпускании - Released.

4. Используя функции XFlush / XSync и delay, напишите программу без цикла обработки сообщений, отображающую черное окно размером 100х100 пикселей в течение 5 секунд.

1.2 Текст и графика

В данном разделе описываются возможности, которые имеет программист для вывода текста и произвольных графических изображений. Особенностью X является то, что рисовать можно не только в окне, но и в специально подготовленной области памяти. Данная область называется картой пикселей и идентифицируется целым числом, имеющим тип TPixmap. Карта толщиной в один бит имеет специальное название - битовая.

1.2.1 Графический контекст

Прежде чем начать работу с графикой, программа должна выделить себе специальную структуру данных и получить указатель на нее. Эта структура называется графическим контекстом (Graphic Context (GC)). Указатель на GC используется в качестве одного из параметров при вызове "рисующих" функций X. Графический контекст содержит ряд атрибутов, влияющих на отображение объектов: текста, линий, фигур и др. Выделенный GC должен быть освобожден до завершения работы программы.

Графический контекст создается процедурой XCreateGC, имеющей следующий прототип:

function XCreateGC(prDisplay: PDisplay; nDrawable: TDrawable; nValueMask: cardinal; prValues: PXGCValues): TGC; cdecl; external;

Первый аргумент - это указатель на структуру типа TDisplay, который программа получает после вызова XOpenDisplay; второй - идентификатор окна (или карты пикселей), в котором программа будет рисовать; третий - битовая маска, определяющая, какие атрибуты GC задаются; последний аргумент - структура типа TXGCValues, определяемая следующим образом:

Поделиться:
Популярные книги

Личный аптекарь императора. Том 5

Карелин Сергей Витальевич
5. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
7.50
рейтинг книги
Личный аптекарь императора. Том 5

Кодекс Охотника. Книга II

Винокуров Юрий
2. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
боевая фантастика
юмористическое фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга II

Студент из прошлого тысячелетия

Еслер Андрей
2. Соприкосновение миров
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Студент из прошлого тысячелетия

Последний Герой. Том 5

Дамиров Рафаэль
5. Последний герой
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Последний Герой. Том 5

На границе империй. Том 8

INDIGO
12. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8

Адвокат Империи 14

Карелин Сергей Витальевич
14. Адвокат империи
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Адвокат Империи 14

Ваше Сиятельство 4т

Моури Эрли
4. Ваше Сиятельство
Любовные романы:
эро литература
5.00
рейтинг книги
Ваше Сиятельство 4т

Кодекс Охотника

Винокуров Юрий
1. Кодекс Охотника
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
боевая фантастика
5.00
рейтинг книги
Кодекс Охотника

Алые перья стрел

Крапивин Владислав Петрович
Детские:
детские приключения
8.58
рейтинг книги
Алые перья стрел

Кодекс Крови. Книга VII

Борзых М.
7. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VII

Черный Маг Императора 14

Герда Александр
14. Черный маг императора
Фантастика:
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 14

Древесный маг Орловского княжества 3

Павлов Игорь Васильевич
3. Орловское княжество
Фантастика:
аниме
сказочная фантастика
фэнтези
попаданцы
гаремник
5.00
рейтинг книги
Древесный маг Орловского княжества 3

Снайпер

Поселягин Владимир Геннадьевич
3. Жнец
Фантастика:
боевая фантастика
попаданцы
5.60
рейтинг книги
Снайпер

Элизиум. Аликс и монеты

Андерсон Александр
1. Элизиум
Фантастика:
фэнтези
сказочная фантастика
8.98
рейтинг книги
Элизиум. Аликс и монеты