Pascal Модуль Graph. ABC Лекция


Pascal Модуль Graph. ABC Лекция № 10 1

Подключение дополнительных библиотек Для работы в графическом режиме необходимо подключение модуля Graph. ABC. Первой инструкцией программы должна быть инструкция uses Graph. ABC; 2

Графический режим Графический экран Pas с al. ABC (по умолчанию) содержит 64 0 точек по горизонтали и 400 точек по вертикали. 640 точек Начало отсчета – левый верхний угол экрана 400 точек 3

Управление экраном Set. Window. Width(w) - Устанавливает ширину графического окна; Set. Window. Height(h) - Устанавливает высоту графического окна; 4

Очистка графического окна Clear. Window; - очищает графическое окно белым цветом. Clear. Window( color ); - очищает графическое окно указанным цветом. program clear; uses Graph. ABC; begin Clear. Window; Clear. Window (cl. Money. Green); end. Цвет зеленых денег 5

Графические примитивы 1. Точка 2. Линия 3. Прямоугольник 4. Окружность 5. Эллипс 6. Сектор 7. Дуга 6

Точка Set. Pixel(x, y, color ) - Закрашивает один пиксел с координатами (x, y) цветом color program tochka; uses Graph. ABC; begin Set. Pixel(300, 200, clred); end. 7

Линии Line. To(x, y ) - рисует отрезок от текущего положения пера до точки (x, y); координаты пера при этом также становятся равными (x, y). Program liniay; uses Graph. ABC; begin x, y Line. To(300, 200); end. 8

Линии Line(x 1, y 1, x 2, y 2) - рисует отрезок с началом в точке (x 1, y 1) и концом в точке (x 2, y 2). x 1, y 1 Program liniay; uses Graph. ABC; begin line(100, 500, 250); x 2, y 2 end. 9

Используемые цвета cl. Black – черный cl. Aqua – бирюзовый cl. Purple – фиолетовый cl. Olive – оливковый cl. White – белый cl. Fuchsia – сиреневый cl. Maroon – темно-красный cl. Teal – сине-зеленый cl. Red – красный cl. Gray – темно-серый cl. Navy – темно-синий cl. Lime – ярко-зеленый cl. Green – зеленый cl. Money. Green – цвет cl. Brown – коричневый зеленых денег cl. Blue – синий cl. Lt. Gray – светло-серый cl. Sky. Blue – голубой cl. Dk. Gray – темно-серый cl. Yellow – желтый cl. Med. Gray – серый cl. Cream – кремовый cl. Silver – серебряный Random(16777215) – случайный цвет из всей палитры цветов Паскаля 10

Цвет линии Set. Pen. Color(color ) - устанавливает цвет пера, задаваемый параметром color. Program liniay; uses Graph. ABC; begin setpencolor(clred); line(30, 400, 350); end. 11

Пунктирная линия Set. Pen. Style(<номер от 1 до 6>); - устанавливает стиль пера, задаваемый номером. program prim; uses Graph. ABC; begin Setpencolor(clred); Set. Pen. Style(1); {1 - длинный штрих} Line(10, 100, 350, 100); Set. Pen. Style(2); {2 - короткий штрих} Line(10, 125, 350, 125); Set. Pen. Style(3); {3 - штрих-пунктир} Line(10, 150, 350, 150); end. 12

Толщина линии Set. Pen. Width(n ) - устанавливает ширину ( толщину ) пера, равную n пикселям. Program liniay; uses Graph. ABC; begin setpenwidth(20); setpencolor(clred); line(30, 400, 350); end. 13

Треугольник Рисуется процедурами Line(x 1, y 1, x 2, y 2); Line. To(x, y); Program treugolnik; uses Graph. ABC; begin setpenwidth(20); setpencolor(clred); line(300, 100, 500, 300); lineto(100, 300); lineto(300, 100); floodfill(300, 200, clgreen); 14 end.

Прямоугольник Rectangle(x 1, y 1, x 2, y 2 ) - рисует прямоугольник, заданный координатами противоположных вершин (x 1, y 1) и (x 2, y 2). x 1, y 1 Program pryamougolnik; uses Graph. ABC; begin x 2, y 2 Rectangle(50, 200, 200); end. 15

Заливка цветом Flood. Fill(x, y, color ) - заливает область одного цвета цветом color, начиная с точки (x, y). x 1, y 1 Program pryamougolnik; uses Graph. ABC; x 2, y 2 begin Rectangle(50, 200, 200); Flood. Fill(100, cl. Blue); end. 16

Заливка кистью Set. Brush. Color(color) - устанавливает цвет кисти. Заливка кистью распространяется на замкнутый контур , описание которого следует за процедурой установки цвета кисти. Program zalivka_kist; uses Graph. ABC; Begin Set. Brush. Color(cl. Green); Rectangle(50, 300, 300); end. 17

Заливка кистью Set. Brush. Style(номер от 0 до 7 или название) - устанавливает стиль кисти, задаваемый номером или символической константой. Program p 12_zalivka; uses Graph. ABC; Begin Set. Brush. Color(cl. Aqua); Set. Brush. Style(1); Rectangle(10, 100, 100); Set. Brush. Color(cl. Red); Set. Brush. Style(2); Rectangle(110, 200, 100); Set. Brush. Color(cl. Blue); Set. Brush. Style(3); Rectangle(210, 300, 100); Set. Brush. Color(cl. Green); Set. Brush. Style(4); Rectangle(10, 100, 210); Set. Brush. Color(cl. Yellow); По умолчанию Set. Brush. Style(5); задается стиль 0 – Rectangle(110, 200, 210); сплошная заливка Set. Brush. Color(cl. Black); цветом. Set. Brush. Style(6); Rectangle(210, 110, 300, 210); 18 end.

Заливка кистью Set. Brush. Picture(‘fname’) - устанавливает в качестве образца для закраски кистью образец, хранящийся в файле fname, при этом текущий цвет кисти при закраске игнорируется. uses Graph. ABC; begin Set. Brush. Picture('brush 4. bmp'); Ellipse(0, 0, 640, 400); end. 19

Цвет и толщина контура Задаются процедурами Set. Pen. Width(w); Set. Pen. Color(color); Program pryamougolnik; uses Graph. ABC; begin Set. Pen. Color(clred); Set. Pen. Width(20); Rectangle(50, 200, 200); Flood. Fill(100, cl. Blue); end. 20

Окружность Circle(x, y, r) - рисует окружность с центром в точке (x, y) и радиусом r. Program circle; uses Graph. ABC; r begin x 1, y 1 Circle(500, 200, 100); Flood. Fill(500, 200, clred); end. 21

Эллипс Ellipse(x 1, y 1, x 2, y 2 ) - рисует эллипс, заданный своим описанным прямоугольником с координатами противоположных вершин (x 1, y 1) и (x 2, y 2). x 1, y 1 Program oval; uses Graph. ABC; x 1, y 1 begin Ellipse(50, 200, 350); Flood. Fill(50+100, clred); Ellipse(250, 150, 550, 300); x 2, y 2 Flood. Fill(250+100, 150+100, cl. Blue); x 2, y 2 end. 22

Дуга окружности Arc(x, y, r, a 1, a 2 ) - Рисует дугу окружности с центром в точке (x, y) и радиусом r, заключенной между двумя лучами, образующими углы a 1 и a 2 с осью OX (a 1 и a 2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки). r Program duga; uses Graph. ABC; x, y Begin Set. Pen. Width(10); Arc(300, 250, 150, 45, 135); end. 23

Сектор Pie(x, y, r, a 1, a 2 ) - рисует сектор окружности, ограниченный дугой (параметры процедуры имеют тот же смысл, что и в процедуре Arc). Program sector; uses Graph. ABC; begin Pie(300, 200, 100, 0, 90); Flood. Fill(300+10, 200 -10, cl. Aqua); end. 24

Вывод текста в графическое окно Text. Out(x, y, ’ строка ’ ); - выводит строку текста в позицию (x, y) (точка (x, y) задает верхний левый угол прямоугольника, который будет содержать текст). Program text; uses Graph. ABC; begin Text. Out(100, 30, 'Квадрат'); Rectangle(50, 200, 200); Flood. Fill(55, cl. Blue); end. 25

Действия со шрифтом Set. Font. Name(‘name’)- устанавливает наименование шрифта. Set. Font. Color(color) - устанавливает цвет шрифта. Set. Font. Size(sz) - устанавливает размер шрифта в пунктах. Set. Font. Style(fs) - устанавливает стиль шрифта. 26

Название шрифта По умолчанию установлен шрифт, имеющий наименование MS Sans Serif. Наиболее распространенные шрифты – это Times, Arial и Courier New. Наименование шрифта можно набирать без учета регистра. Пример: Set. Font. Name(‘Times’); 27

Стиль шрифта Задается именованными константами: fs. Normal – обычный; fs. Bold – жирный; fs. Italic – наклонный; fs. Bold. Italic – жирный наклонный; fs. Underline – подчеркнутый; fs. Bold. Underline – жирный подчеркнутый; fs. Italic. Underline – наклонный подчеркнутый; fs. Bold. Italic. Underline – жирный наклонный подчеркнутый. 28

Например, Program text; uses Graph. ABC; Begin Set. Font. Name(‘Arial’); Set. Font. Size(20); Set. Font. Color(cl. Red); Text. Out(10, ‘обычный'); Set. Font. Style(fs. Italic); Set. Font. Color(cl. Blue); Text. Out(10, 50, ‘наклонный'); Set. Font. Style(fs. Bold); Set. Font. Color(Random(16777215)); Text. Out(10, 90, ‘жирный'); Set. Font. Style(fs. Underline); Set. Font. Color(Random(16777215)); Text. Out(10, 130, ‘подчеркнутый'); Set. Font. Style(fs. Bold. Italic. Underline); Set. Font. Color(Random(16777215)); Text. Out(10, 170, ’жирный, наклонный, подчеркнутый'); end. 29

Используемые цвета Цвет можно задавать и с помощью функции RGB(r, g, b) где r, g и b – целые числа в диапазоне от 0 до 255. Функция возвращает целое значение, являющееся кодом цвета, который содержит красную, зеленую и синюю составляющие с интенсивностями r, g и b соответственно (0 соответствует минимальной интенсивности, 255 – максимальной). RGB(255, 255) – соответствует белому цвету. RGB(0, 0, 0) – соответствует черному цвету. 30

Например, Program color; uses Graph. ABC; begin Clearwindow(rgb(200, 150, 250)); Text. Out(93, 30, ' Квадрат '); Rectangle(50, 200, 200); Flood. Fill(55, cl. Red); Text. Out(275, 30, ' Эллипс'); Ellipse(250, 350, 200); Flood. Fill(250+50, cl. Yellow); end. 31

Вывод текста в графическое окно Текст можно вывести с помощью операторов Gotoxy(x, y) и. Write(‘ текст ’) , подключив дополнительно модуль Crt. Program text 2; uses Crt, Graph. ABC; begin clrscr; hidecursor; {скрывает текстовый курсор} goto. XY(12, 3); write(‘Квадрат'); Rectangle(50, 200, 200); Flood. Fill(55, cl. Yellow); end. 32

Загрузка готового рисунка Load. Picture(fname) n: =Load. Picture(fname) – загружает рисунок из файла с именем fname в оперативную память и возвращает описатель рисунка в целую переменную n; если файл не найден, то возникает ошибка времени выполнения. Загружать можно рисунки в формате. bmp, . jpg или. gif. 33

Вывод рисунка в графическое окно Draw. Picture(n, x, y); Выводит рисунок с описателем n в позицию (x, y) графического окна. uses Graph. ABC; var pic: integer; begin pic: =Load. Picture('demo. bmp'); Draw. Picture(pic, 10); Destroy. Picture(pic); end. 34

Сохранение созданного рисунка Save. Picture(n, ‘fname’) - Сохраняет рисунок с описателем n в файл с именем fname. Рисунки можно сохранять в формате. bmp, . jpg или. gif. 35

Пример 1. Составим алгоритм, в результате которого будет нарисован один круг. 36

//Пример 2. Написать программу, которая выведет на экран монитора //отрезок красного цвета, соединяющий две точки //с координатами (150, 400) и (300, 100). Program Linii; Uses Graph. Abc; // Подключение модуля Graph. Abc Begin Set. Window. Size(500, 500); // Установка размеров графического окна Set. Pen. Color(cl. Red); // цвет пера - красный Line(150, 400, 300, 100); End. 37

//Нарисуем домик Program grafikal; Uses Graph. Abc; Begin Set. Window. Size(640, 480); Clear. Window(cl. White); Set. Pen. Color(cl. Teal); Set. Pen. Width(5); Rectangle(100, 150, 250, 300); Set. Brush. Color(cl. Yellow); Circle(170, 200, 25); Flood. Fill(150, 160, cl. Brown); Line (100, 150, 175, 90); Line (175, 90, 250, 150); Flood. Fill(175, 100, cl. Green); End. 38

//Нарисуем трактор program tractor; uses graphabc; var x, y: integer; begin setwindowsize (940, 680); setwindowtitle ('Трактор'); setpenwidth (2); x: =10; y: =10; setpencolor (clblack); rectangle(x+40, y+40, x+140, y+90); floodfill(x+50, y+50, clyellow); rectangle(x+50, y+50, x+80, y+85); floodfill(x+55, y+75, clolive); rectangle(x+95, y+10, x+130, y+65); floodfill(x+110, y+35, clgreen); circle(x+60, y+100, 10); floodfill(x+60, y+100, clgray); circle(x+110, y+90, 20); floodfill(x+110, y+90, clgray); end. 39

// Мозаика. Квадратики случайным образом меняются местами uses Graph. ABC; const w=25; w 1=1; m=50; n=70; x 0=0; y 0=0; Var i, j, i 1, j 1, di, dj, v, k: integer; a: array [0. . n, 0. . m] of integer; begin Set. Window. Caption('Мозаика'); for i: =0 to n-1 do for j: =0 to m-1 do begin a[i, j]: =RGB(Random(256), Random(256)); Set. Brush. Color(a[i, j]); Fill. Rect(x 0+i*w, y 0+j*w, x 0+(i+1)*w-w 1, y 0+(j+1)*w-w 1); end; while true do begin k: =k+1; if k mod 1000 = 0 then begin k: =0; Sleep(1); end; i: =Random(n-2)+1; j: =Random(m-2)+1; di: =Random(3)-1; dj: =Random(3)-1; i 1: =i+di; j 1: =j+dj; v: =a[i, j]; a[i, j]: =a[i 1, j 1]; a[i 1, j 1]: =v; Set. Brush. Color(a[i, j]); Fill. Rect(x 0+i*w, y 0+j*w, x 0+(i+1)*w-w 1, y 0+(j+1)*w-w 1); Set. Brush. Color(a[i 1, j 1]); Fill. Rect(x 0+i 1*w, y 0+j 1*w, x 0+(i 1+1)*w-w 1, y 0+(j 1+1)*w-w 1); end; end. 40

Лекция_13_Графика_Pascal_ABC.ppt
- Количество слайдов: 40