Если в текстовом режиме работы Pascal минимальной единицей экрана является символ, то в графическом режиме – пиксел. Пиксел имеет координаты (X и Y) и цвет (по умолчанию белый). Координаты отсчитываются с левого верхнего угла, т.е. пиксел, расположенный в верхнем левом углу имеет координаты (0,0).
Для того чтобы включить графический режим в Паскале, необходимо подключить его в разделе объявления модулей (USES). В этом уроке мы научимся запускать графический режим и выводить на экран точку.
Для перевода системы в графический режим можно написать отдельную процедуру, которую затем можно будет использовать для написания программ, так как не очень-то удобно каждый раз записывать в программе целый набор операторов инициализации.
В этом уроке мы научимся рисовать линии в графическом режиме и устанавливать цвет этих линий. Линия в графическом режиме Pascal задается с помощью процедуры line, а ее цвет – с помощью процедуры setcolor.
Функция GetmaxX определяет максимальную координату по оси X для данного монитора. Функция GetmaxY определяет максимальную координату по оси Y для данного монитора.
Процедура MoveTo (x,y) служит для перемещения текущего указателя в точку с координатами (x,y). Процедура LineTo (x,y) рисует линию, в которой координатами начала линии будут координаты текущего указателя, а координатами конца – координаты (x,y).
Процедура LineRel (x,y) рисует линию, у которой начальные координаты совпадают с координатами текущего указателя, а координаты конца высчитываются путем прибавления (x,y) к координатам текущего указателя. Кроме того, текущий указатель переносится в эту точку (с координатами конца линии).
Процедура MoveRel (x,y) перемещает текущий указатель на расстояние x и y.
Процедура OutText (‘’) выводит текст на экран в графическом режиме. Текст заключается в кавычки и круглые скобки.
В этом уроке мы напишем программу, которая выводит на экран линию из точек. Для этого нам понадобится процедура вывода на экран точки PutPixel.
Процедура cleardevice очищает экран. При этом указатель устанавливается в левый верхний угол с координатами (0, 0). Сам экран при этом заполняется цветом фона, который задается процедурой SetBkColor. Напишем программу, которая будет выводить треугольник на голубом фоне.
Процедура SetLineStyle устанавливает толщину и тип линии. Эта процедура влияет на все линии, которые заданы процедурами Line, LineTo, Rectangle, DrawPoly, Arc, Circle и др.
Процедуры Rectangle и Bar используются в Паскаль для рисования прямоугольников. Их отличие друг от друга заключается в том, что процедура Rectangle рисует простой прямоугольник, а процедуры Bar рисует закрашенный прямоугольник.
Процедура Bar3D используется в Паскаль для рисования прямоугольных параллелепипедов.
Процедура Circle вычерчивает на экране окружность. В качестве параметров этой процедуры используются координаты центра окружности и длина радиуса. Процедура Arc вычерчивает на экране дугу, у которой указываются координаты центра, начальный угол, конечный угол и длину радиуса.
Процедура Ellipse рисует на экране эллипсную дугу. В качестве параметров для этой процедуры указываются координаты центра дуги в пикселах, начальный и конечный углы в градусах, горизонтальный и вертикальный радиус дуги в пикселах.
Процедура FillEllipse рисует на экране закрашенный элипс, для которого стиль и цвет закраски задается процедурой SetFillStyle.
Процедура FloodFill закрашивает замкнутую область. Данная процедура имеет 3 параметра. Первые 2 параметра определяют точку с координатами, откуда начинается закраска. 3-й параметр определяет границу закраски.
Процедура PieSlice рисует на экране заполненный сектор окружности, а процедура Sector – заполненный эллиптический сектор. Цвет секторов определяется процедурой SetColor, а заполнение - процедурой SetFillStyle.
Как мы уже знаем, для вывода на экран какого-либо текста используется либо процедура Write, либо Writeln. Эти процедуры применяются исключительно в текстовом режиме. Для того чтобы вывести на экран текст в графическом режиме используется процедура OutText.
Процедура SetTextStyle используется для изменения шрифта выводимого текста, направления вывода, а также величины символов.
В предыдущих примерах мы выводили текст английскими буквами. При попытке вывести текст русскими буквами в графическом режиме у нас возникнут определенные проблемы. Вместо текста на экране мы увидим непонятные кракозябры. Дело в том, что графический режим Паскаля не поддерживает кириллицу. В некоторых случаях русскоязычные сообщения выводятся шрифтом DefaultFont, однако он не отличается большими изобразительными возможностями. Для того чтобы решить проблему русских шрифтов в Паскале, можно использовать модифицированные шрифты.
Процедура SetTextJustify используется для выравнивания текста относительно текущего указателя или относительно заданных координат.
Процедура SetUserCharSize используется для изменения величины символов в соответствии с заданными пропорциями. Данная процедура может применяться только к векторным шрифтам. Увеличение или уменьшение размеров символов проводится по отношению к тем размерам, которые заданы в процедуре SetTextStyle.
Процедура Str используется для преобразования числа в его строковое представление. Данную процедуру мы изучали в разделе, посвященном строкам (процедура STR и VAL). Напишем программу, которая определит разрешение вашего монитора (в пикселах) и выведет на экран числовые значения этого разрешения.
Функция GetX возвращает значение, которое содержит текущие координаты указателя по оси X.
Функция GetY возвращает значение, которое содержит текущие координаты указателя по оси Y.
Процедура SetViewPort устанавливает на экране прямоугольное окно. Это прямоугольное окно является активным по отношению ко всему экрану. Различные процедуры, рисующие на экране геометрические фигуры или выводящие на экран текст, будут действовать только внутри окна.
Процедуру SetViewPort удобно использовать для построения системы координат на экране. Эту систему координат можно в дальнейшем использовать для построения графика функции.
В предыдущем примере мы начали строить систему координат с помощью процедуры SetViewPort. Дополним предыдущий пример тем, что построим на осях координат единицы измерения и пронумеруем их.