В системе программирования PascalABC кроме текстового окна можно использовать графическое окно, в котором можно рисовать. Рисунок состоит из пикселов – маленьких одноцветных квадратиков («точек»).
Действия с графическим окном:
1. ClearWindow; - очищает графическое окно белым цветом;
3.FillWindow(n); - заполняет окно рисунком с описателем n;
3. SetWindowSize(w,h); - задаёт размеры графического окна;
4. SetWindowPos(l,t); - задаёт отступ графического окна от левого верхнего угла экрана;
5.SetWindowCaption(s); - задаёт заголовок окна;
6. CloseWindow; - закрывает графическое окно;
7. ScreenWidth - возвращает ширину экрана;
8. ScreenHeight: - возвращает высоту экрана;
9. CenterWindow; - центрирует графическое окно на экране;
10. MaximizeWindow; - разворачивает графическое окно на весь экран, оставляя видимой лишь панель задач;
11. NormalizeWindow– восстанавливает размер графического окна.
Рисовать отдельными точками, конечно, неудобно. Но, если применять цикл, в котором координаты и цвета точек рассчитываются по каким-либо формулам, можно получить графики функций и другие красивые рисунки.
Поставить в окне один пиксел цвета c можно командой SetPixel(x,y,c); Функция GetPixel(x,y) позволяет узнать цвет пиксела с координатами (x,y).
Библиотека GraphABC использует 24-битную цветовую палитру. Цвета имеют числовые значения от 0 (чёрный) до 16 777 215 (белый). Любой оттенок цвета можно вычислить по его красной (r), зелёной (g) и синей (b) составляющим с помощью функции RGB(r,g,b);, где r, g и b принимают значения от 0 до 255. 0 соответствует минимальной яркости, 255 – максимальной.
В качестве примера нарисуем звездное небо, разбросав точки случайного цвета по случайным координатам окна.
Более удобным способом является рисование не отдельными точками, а отрезками, дугами и замкнутыми фигурами. В таких командах цвет линии и заливки не указывают для каждой фигуры, а задают заранее.
Линия определяется характеристиками пера:
1. SetPenColor(c); - задаёт цвет пера;
2. SetPenWidth(w); - задаёт толщину пера в пикселах;
После настройки пера и кисти можно рисовать, используя такие команды: (все параметры – целые числа)
1. Line(x1,y1,x2,y2); - рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2);
2. MoveTo(x,y); - передвигает невидимое перо к точке с координатами (x,y); Эта функция работает в паре с функцией LineTo(x,y)., которая рисует отрезок от текущего положения пера до точки (x,y); координаты пера при этом также становятся равными (x,y).
3. Circle(x,y,r); - рисует окружность с центром в точке (x,y) и радиусом r.
4. Ellipse(x1,y1,x2,y2); - рисует эллипс, заданный описанным вокруг него прямоугольником с координатами противоположных вершин (x1,y1) и (x2,y2).
6. RoundRect(x1,y1,x2,y2,w,h); - рисует прямоугольник со скругленными углами; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления углов.
6. Arc(x,y,r,a1,a2); - рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки).
7. Pie(x,y,r,a1,a2); - рисует сектор окружности, ограниченный дугой (параметры процедуры имеют тот же смысл, что и в процедуре Arc).
8. Chord(x,y,r,a1,a2); - рисует фигуру, ограниченную дугой окружности и отрезком, соединяющим ее концы (параметры процедуры имеют тот же смысл, что и в процедуре Arc).
10.Polygon(a,n); - строит ломаную по n точкам, координаты которых заданы в массиве a элементов типа Point.
11.Polyline(a,n); - строит замкнутую ломаную по n точкам, координаты которых заданы в массиве a элементов типа Point.
Замкнутые фигуры заливаются цветом кисти. Можно также нарисовать замкнутую область отрезками, дугами и другими примитивами и залить внутреннюю область цветом c, начиная с точки (x,y), с помощью команды FloodFill(x,y,c);