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

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

Жанры

Программирование в 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, определяемая следующим образом:

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

Беглец

Бубела Олег Николаевич
1. Совсем не герой
Фантастика:
фэнтези
попаданцы
8.94
рейтинг книги
Беглец

Русский рок. Малая энциклопедия

Коллектив авторов
Справочная литература:
энциклопедии
7.00
рейтинг книги
Русский рок. Малая энциклопедия

Эллинские поэты

Коллектив авторов
Старинная литература:
античная литература
7.00
рейтинг книги
Эллинские поэты

Русские дети (сборник)

Фрай Макс
Проза:
современная проза
5.60
рейтинг книги
Русские дети (сборник)

12 историй о любви

Коллектив авторов
Проза:
русская классическая проза
5.00
рейтинг книги
12 историй о любви

Масоны

Писемский Алексей Феофилактович
Проза:
русская классическая проза
6.25
рейтинг книги
Масоны

Хроники Иберлена (Трилогия)

Бочаров Анатолий Юрьевич
Хроники Иберлена
Фантастика:
фэнтези
героическая фантастика
5.00
рейтинг книги
Хроники Иберлена (Трилогия)

Анна Иоановна

Сахаров Андрей Николаевич
9. Романовы. Династия в романах
Проза:
историческая проза
5.60
рейтинг книги
Анна Иоановна

Фрегат Звенящий (сборник)

Крапивин Владислав Петрович
24. Владислав Крапивин собрание сочинений
Детские:
детская фантастика
5.00
рейтинг книги
Фрегат Звенящий (сборник)

Том 10. Господа «ташкентцы». Дневник провинциала

Салтыков-Щедрин Михаил Евграфович
10. Собрание сочинений в двадцати томах
Проза:
русская классическая проза
6.25
рейтинг книги
Том 10. Господа «ташкентцы». Дневник провинциала

Тигриный лог

Чеснокова Юлия Олеговна
Детективы:
прочие детективы
7.00
рейтинг книги
Тигриный лог

Лэшер

Райс Энн
5. Мэйфейрские ведьмы
Фантастика:
ужасы и мистика
8.32
рейтинг книги
Лэшер

Апокалипсис

Мартин Джордж Р.Р.
Антология
Фантастика:
социально-философская фантастика
героическая фантастика
боевая фантастика
киберпанк
6.00
рейтинг книги
Апокалипсис

Linux Mint и его Cinnamon. Очерки применителя

Федорчук Алексей Викторович
Компьютеры и Интернет:
ос и сети
5.00
рейтинг книги
Linux Mint и его Cinnamon. Очерки применителя