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

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

Жанры

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

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

Третий Генерал: Тома I-II

Зот Бакалавр
1. Третий Генерал
Фантастика:
городское фэнтези
попаданцы
аниме
сказочная фантастика
5.00
рейтинг книги
Третий Генерал: Тома I-II

Двенадцатая реинкарнация. Трилогия

Богдашов Сергей Александрович
Фантастика:
боевая фантастика
5.60
рейтинг книги
Двенадцатая реинкарнация. Трилогия

Конфликт чести. Агент перемен. Лови день

Ли Шарон
Золотая библиотека фантастики
Фантастика:
боевая фантастика
6.25
рейтинг книги
Конфликт чести. Агент перемен. Лови день

Маркс и Энгельс

Серебрякова Галина Иосифовна
421. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Маркс и Энгельс

Волки на границе

Милан Виктор
26. Боевые роботы — BattleTech
Фантастика:
боевая фантастика
6.40
рейтинг книги
Волки на границе

#Бояръ-Аниме. Газлайтер. Том 7

Володин Григорий Григорьевич
7. История Телепата
Фантастика:
аниме
фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 7

Анубис

Хольбайн Вольфганг
Фантастика:
фэнтези
ужасы и мистика
8.31
рейтинг книги
Анубис

Весь Фрэнк Герберт в одном томе. Компиляция

Герберт Фрэнк Патрик
Абсолют
Фантастика:
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Весь Фрэнк Герберт в одном томе. Компиляция

Лоенгрин, рыцарь Лебедя

Никитин Юрий Александрович
Фантастика:
фэнтези
боевая фантастика
5.50
рейтинг книги
Лоенгрин, рыцарь Лебедя

Ведьмы Плоского мира

Пратчетт Терри Дэвид Джон
Фантастика:
юмористическая фантастика
5.00
рейтинг книги
Ведьмы Плоского мира

Футуриф. Токсичная честность

Розов Александр Александрович
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
Футуриф. Токсичная честность

Ведьма

Вилар Симона
1. Ведьма Малфрида
Фантастика:
фэнтези
8.77
рейтинг книги
Ведьма

Деяния святых Апостолов

Стотт Джон Р.
Научно-образовательная:
религиоведение
5.00
рейтинг книги
Деяния святых Апостолов

Артур и Джордж

Барнс Джулиан Патрик
Интеллектуальный бестселлер. Читает весь мир.
Детективы:
исторические детективы
6.40
рейтинг книги
Артур и Джордж