Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции программирование.doc
Скачиваний:
6
Добавлен:
29.11.2019
Размер:
1.01 Mб
Скачать

Библиотека GraphAbc

В системе программирования PascalABC кроме текстового окна можно использовать графическое окно, в котором можно рисовать. Рисунок состоит из пикселов – маленьких одноцветных квадратиков («точек»).

Действия с графическим окном:

1. ClearWindow; - очищает графическое окно белым цветом;

2. ClearWindow(c); - очищает графическое окно цветом c;

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 – максимальной.

Библиотека GraphABC имеет константы для обозначения стандартных цветов: clBlack – черный; clPurple – фиолетовый; clWhite – белый; clMaroon – темно-красный; clRed – красный; clNavy – темно-синий; clGreen – зеленый; clBrown – коричневый; clBlue – синий; clSkyBlue – голубой; clYellow – желтый; clCream – кремовый; clAqua – бирюзовый; clOlive – оливковый; clFuchsia – сиреневый; clTeal – сине-зеленый; clGray – темно-серый; clLime – ярко-зеленый; clMoneyGreen – цвет зеленых денег; clLtGray – светло-серый; clDkGray – темно-серый; clMedGray – серый; clSilver – серебряный.

В качестве примера нарисуем звездное небо, разбросав точки случайного цвета по случайным координатам окна.

program starsky;

uses GraphABC;

var

i,x,y,c: integer;

begin

randomize;

SetWindowSize(600,500); CenterWindow; ClearWindow(clblack);

for i:=1 to 1000 do {В цикле рисуем 1000 звёзд}

begin

x:=random(600); {Случайный x в пределах окна}

y:=random(500); {Случайный y в пределах окна}

c:=1+random(clwhite); {Сл. цвет точки от 1 до белого}

SetPixel(x,y,c); {Ставим точку}

end;

end.

Графические примитивы

Более удобным способом является рисование не отдельными точками, а отрезками, дугами и замкнутыми фигурами. В таких командах цвет линии и заливки не указывают для каждой фигуры, а задают заранее.

Линия определяется характеристиками пера:

  1. SetPenColor(c); - задаёт цвет пера;

  2. SetPenWidth(w); - задаёт толщину пера в пикселах;

  3. SetPenStyle(s); - задаёт стиль пера.

Стили пера задаются следующими константами: psSolid – сплошная линия; psClear -  прозрачная линия; psDash -  штриховая линия (- - - - - ); psDot -  пунктирная линия (······); psDashDot - штрихпунктир (─·─·─·─·); psDashDotDot-  штрих и двойной пунктир (─··─··─··─··);

Заливка определяется характеристиками кисти:

  1. SetbrushColor(c); - задаёт цвет кисти;

  2. SetBrushPicture(fname); - загружает из графического файла рисунок - образец для заливки;

  3. ClearBrushPicture; - отключает рисунок-образец;

  4. SetBrushStyle(s); - задаёт стиль заливки:

После настройки пера и кисти можно рисовать, используя такие команды: (все параметры – целые числа)

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).

5. Rectangle(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).

9. FillRect(x1,y1,x2,y2); - заливает прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2), цветом текущей кисти.

10. Polygon(a,n); - строит ломаную по n точкам, координаты которых заданы в массиве a элементов типа Point.

11. Polyline(a,n); - строит замкнутую ломаную по n точкам, координаты которых заданы в массиве a элементов типа Point.

Замкнутые фигуры заливаются цветом кисти. Можно также нарисовать замкнутую область отрезками, дугами и другими примитивами и залить внутреннюю область цветом c, начиная с точки (x,y), с помощью команды FloodFill(x,y,c);