МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра «Захист інформації»
EMBED Word.Picture.8
Звіт
до лабораторної роботи № 4
Управління кольорами та палітрою графічних зображень
з курсу “ Комп’ютерна графіка”
Виконав:
студент групи ІБ – 44
Перевірив:
Баран Р. Д.
Львів 2009
Мета роботи -вивчити процедури та функції для управління кольорами та па-літрою графічних зображень; навчитися складати програми на алгоритмічній мові Турбо-Паскаль для побудови різноманітних кольорових зображень.
КОРОТКІ ТЕОРЕТИЧНІ ДАНІ
В залежності від типу відеомонітора на його екрані можуть відтворюватися різні кольори. Гама кольорів, що може знаходитися одночасно на екрані називається па-літрою. Кількість кольорів в палітрі називається її розміром.
Розглянемо процедури та функції для управління кольорами та палітрою гра-фічних зображень, які знаходяться в модулі GRAPH.TPU мови Турбо-Паскаль (ці про-цедури та функції можуть використовуватися лише після ініціалізації графічного ре-жиму роботи).
Процедура SETCOLOR встановлює поточний колір для виводу ліній та символів; формат звертання
SETCOLOR ( <колір> ) ,
де <колір> - вираз типу word, що задає поточний колір.
Процедура FILLELLIPSE обводить лінією і штрихує еліпс; формат звертання
FILLELLIPSE (X,Y,<поч.кут>,<кінц.кут>,RX,RY),
де X, Y - вирази типу integer, що задають координати центра;
<поч.кут> і <кінц.кут>, RX, RY - вирази типу word, що визначають, відповідно, початковий і кінцевий кути, горизонтальний та вертикальний радіуси еліпса в піксе-лях.
Процедура SECTOR креслить та штрихує сектор еліпса; формат звертання
SECTOR (X,Y,<поч.кут>,<кінц.кут>,RX,RY).
Параметри звертання такі самі, як і в процедури FILLELLIPSE.
Стиль і колір лінії сектора задається процедурами SETLINESTYLE і SETCOLOR, стиль і колір штрихування - процедурою SETFILLSTYLE.
Процедура PIESLICE креслить та штрихує сектор кола; формат звертання
PIESLICE (X,Y,<поч.кут>,<кінц.кут>,R),
де R - вираз типу word, що визначає радіус кола
Сектор обводиться лінією, стиль і колір якої задані процедурами SETLINESTYLE і SETCOLOR, стиль і колір штрихування - процедурою SETFILLSTYLE.
Процедура FLOODFILL штрихує довільну замкнену фігуру; формат звертання
FLOODFILL (X,Y,<колір межі>),
де X, Y - вирази типу integer; координати будь-якої точки всередині замкненої фігури;
<колір межі> - вираз типу word, колір лінії, що визначає межу.
Процедура штрихує замкнену фігуру штрихуванням і кольором, які встановлені процедурою SETFILLSTYLE. Якщо фігура не замкнена, то штрихування заповнить весь екран.
Процедура BAR штрихує прямокутну область екрану. Звертання
BAR (X1,Y1,X2,Y2),
де X1, Y1 та X2, Y2 - вирази типу integer, які визначають координати лівого верхнього та правого нижнього кутів прямокутника, що замальовується.
Процедура штрихує (не обводить) прямокутник штрихуванням і кольором, встановленими процедурою SETFILLSTYLE.
Завдання:
Текст програми:
Uses Graph, CRT;
var d, r, e, i, k :integer;
X0, Y0: integer;
const pi=3.1415;
begin
d:=detect;
InitGraph (d , r, 'd:\bp\bgi');
e:=GraphResult;
if e<>grok then
Writeln (GraphErrorMsg(e))else
begin
setcolor (15);
bar(0,0,640,480);
setcolor(8);
ellipse (320,240,100,260,100,100);
ellipse (290,240,80,278,100,100);
X0:=round(sin((260-90)*(pi/180))*100+290);
Y0:=round(cos((260-90)*(pi/180))*100+240);
repeat
for i:=1 to 182 do
begin
setfillstyle(1,15);
bar(0,0,640,480);
setcolor(8);
ellipse (320,240,100,260,100,100);
ellipse (290,240,78,280,100,100);
setfillstyle(1,14);
floodfill(210,240,8);
setcolor(1);
X0:=round(sin((261-90+i)*(pi/180))*100+290);
Y0:=round(cos((261-90+i)*(pi/180))*100+240);
circle(X0,Y0,10);
setfillstyle(0,7);
floodfill(X0,Y0,1);
delay(5000);
if (keypressed) then halt(1);
end;
for i:=1 to 165 do
begin
setfillstyle (1,15);
bar(0,0,640,480);
setcolor(8);
ellipse (320,240,100,260,100,100);
ellipse (290,240,80,278,100,100);
setfillstyle(1,14);
floodfill(210,240,8);
setcolor(1);
X0:=round(sin((260+90-i)*(pi/180))*100+320);
Y0:=round(cos((260+90-i)*(pi/180))*100+240);
circle(X0,Y0,10);
setfillstyle(0,7);
floodfill(X0,Y0,1);
delay(5000);
if (keypressed) then halt (1);
end;
until(keypressed);
end;
readln;
closegraph;
end.
Висновок: Я ознайомився з основними відомостями. Для свого варіанту навчився малювати рухливе зображення у середовищі Турбо-Паскаль, а також управляти кольорами та палітрою графічних зображень.