МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
кафедра АТ
Звіт
до лабораторної роботи № 3 з курсу
“Комп’ютерна графіка”
на тему:
“Управління кольорами та палітрою графічних зображень засобами
Турбо-Паскаль”.
Варіант №10
1. Мета роботи:
Вивчити процедури та функції для управління кольорами та палітрою графічних зображень; навчитися складати програми на алгоритмічній мові Турбо-Паскаль (далі АМТП) для побудови різноманітних кольорових зображень.
2. Завдання:
Написати програму на АМТП, яка виводить на екран розмальоване зображення.
3. Блок-схема алгоритму програми.
3.1 Загальна блок-схема алгоритму програми:
1.
2
2.
3.
3.2 Деталізована блок-схема блоку № 1 (ініціалізація графічного режиму) загальної блок-схеми:
1
2
3
ні ні так
4
5
3.3 Деталізована блок-схема блоку № 2 (побудова зображення) згальної блок-схеми:
1.
2.
3.
4.
3.4 Деталізована блок-схема блоку № 3 (завершення графічного режиму) загальної блок-схеми:
1
4. Список ідентифікаторів, змінних процедур і функцій.
4.1 Процедури:
SetColor – встановлює поточний колір для виводу ліній та символів;
SetFillStyle – встановлює формат штрихування;
FloodFill – штрихує довільну замкнену фігуру;
Bar – малює зафарбований чотирикутник;
MoveTo – встановлює курсор в задане положення;
LineTo – малює лінію від поточного положення курсору до заданої координати;
Line – малює лінію від однієї координати до іншої;
IntGraphMode – ініціалізує графічний режим;
CloseGrsphMode – закриває графічний режим.
5. Остаточний текст програми:
uses graph,crt;
Procedure IntGraphMode(Mode:integer);
var Driver, Error: integer;
begin
Driver:=Detect;
InitGraph(Driver, Mode, '');
Error:=GraphResult;
if Error <> grOk then
begin
writeln(GraphErrorMsg(Error));
halt(1);
end;
end;
Procedure Solnishko;
begin
{kvadrat}
SetColor(blue);
SetFillStyle(1,blue);
Rectangle(GetMaxX div 2-6,GetMaxY div 2-20,GetMaxX div 2+24,GetMaxY div 2+16);
FloodFill(GetMaxX div 2-5,GetMaxY div 2-19,blue);
{+1}
SetColor(yellow);
SetFillStyle(1,yellow);
rectangle(GetMaxX div 2,GetMaxY div 2-14,GetMaxX div 2 +2,GetMaxY div 2-8);
FloodFill(GetMaxX div 2 +1,GetMaxY div 2-9,yellow);
rectangle(GetMaxX div 2-2,GetMaxY div 2-12,GetMaxX div 2+4 ,GetMaxY div 2-10);
FloodFill(GetMaxX div 2+3 ,GetMaxY div 2-11,yellow);
FloodFill(GetMaxX div 2-1,GetMaxY div 2-11,Yellow);
{+2}
Rectangle(GetMaxX div 2+4,GetMaxY div 2-6,GetMaxX div 2 +6,GetMaxY div 2);
FloodFill(GetMaxX div 2 +5,GetMaxY div 2-1,yellow);
Rectangle(GetMaxX div 2+2,GetMaxY div 2-4,GetMaxX div 2+8 ,GetMaxY div 2-2);
FloodFill(GetMaxX div 2+7 ,GetMaxY div 2-3,yellow);
FloodFill(GetMaxX div 2+3,GetMaxY div 2-3,yellow);
{Moon}
SetColor(white);
SetFillStyle(1,yellow);
Arc(328,235,280,80,13);
Arc(328,235,280,80,10);
Line(337,232,337,239);
Line(328,245,330,247);
Line(330,222,331,227);
FloodFill(331,224,white);
{sun}
SetColor(yellow);
Setfillstyle(1,yellow);
MoveTo(GetMaxX div 2+5,GetMaxY div 2+16);
LineTo(GetMaxX div 2+7,GetMaxY div 2+13);
LineTo(GetMaxX div 2+2,GetMaxY div 2+13);
LineTo(GetMaxX div 2+2,GetMaxY div 2+8);
LineTo(GetMaxX div 2-4,GetMaxY div 2+12);
LineTo(GetMaxX div 2-6,GetMaxY div 2+6);
LineTo(GetMaxX div 2-11,GetMaxY div 2+9);
LineTo(GetMaxX div 2-15,GetMaxY div 2+5);
LineTo(GetMaxX div 2-17,GetMaxY div 2+9);
LineTo(GetMaxX div 2-21,GetMaxY div 2+4);
LineTo(GetMaxX div 2-21,GetMaxY div 2+29);
LineTo(GetMaxX div 2+2,GetMaxY div 2+29);
LineTo(GetMaxX div 2+7,GetMaxY div 2+25);
LineTo(GetMaxX div 2+3,GetMaxY div 2+20);
LineTo(GetMaxX div 2+5,GetMaxY div 2+16);
FloodFill(GetMaxX div 2+5,GetMaxY div 2+15,yellow);
SetColor(white);
SetFillStyle(11,white);
Line(GetMaxX div 2-15,GetMaxY div 2+11,GetMaxX div 2-21,GetMaxY div 2+14);
MoveTo(GetMaxX div 2-15,GetMaxY div 2+11);
LineTo(GetMaxX div 2-7,GetMaxY div 2+11);
LineTo(GetMaxX div 2,GetMaxY div 2+20);
LineTo(GetMaxX div 2,GetMaxY div 2+29);
LineTo(GetMaxX div 2-22,GetMaxY div 2+29);
LineTo(GetMaxX div 2-22,GetMaxY div 2+14);
FloodFill(GetMaxX div 2-5,GetMaxY div 2+20,white);
end;
begin
IntGraphMode(VGAMed);
Solnishko;
readln
end.