
- •Змістовий модуль 2 Практичне заняття № 1
- •Література
- •Короткі теоретичні відомості
- •1: Writeln(‘один’);
- •4: Writeln(‘чотири’);
- •Завдання для виконання
- •Домашнє завдання
- •Контрольні питання
- •Практичне заняття № 2
- •Література
- •Короткі теоретичні відомості
- •Завдання для виконання
- •Контрольні питання
- •Практичне заняття № 3
- •Література
- •Короткі теоретичні відомості Оператор while
- •3 Оператор repeat
- •Завдання для виконання
- •Контрольні питання
- •Практичне заняття № 4
- •Література
- •Короткі теоретичні відомості
- •Завдання для виконання
- •Змістовий модуль 3 Практичне заняття № 5
- •Література
- •Завдання для виконання
- •Опис плану розробки програми
- •Практичне заняття № 6
- •Література
- •Завдання для виконання
- •Практичне заняття № 7
- •Література
- •Завдання для виконання
- •Практичне заняття № 8
- •Література
- •Завдання для виконання
- •Створити програму, яка виводить поточний час та дату.
- •Практичне заняття № 9
- •Література
- •Завдання для виконання
- •Опис плану розробки програми
- •Практичне заняття № 10
- •Література
- •Завдання для виконання
- •Практичне заняття № 11
- •Література
- •Завдання для виконання
- •Практичне заняття № 12
- •Література
- •Завдання для виконання
- •Графіка
- •Переміщення малюнків
- •Практичне заняття № 13
- •Література
- •Завдання для виконання
Практичне заняття № 12
Тема: Графіка в Delphi. Побудова графіків. Переміщення малюнків.
Мета: Ознайомити студентів з поняттям графіки. Розглянути компоненти Delphi, що використовуються для побудови зображень. Закріпити отримані знання на практиці.
Література
М.С.Львов, О.В.Співаковський. Основи алгоритмізації та програмування. Навчальний посібник – Херсон, 1997. – 122с.
Львов М.С., Співаковський О.В. Вступ до обєктно-орієнтованого програмування.–Херсон:ХДПУ.-240 с.
Фаронов В.В. Delphi 6.Учебний курс.-М.:Издатель Молгачева С.В.,-672с.,ил.
Т.Бадд.. Объектно-ориентированное программирование в действии / пер. с англ. - СПб.:Питер, 1997.- 464 с. ил.
http://www.programmersclub.ru/book/ - електронні підручники по Delphi
http://pitbooks.ru/delphi/ - електронні підручники по Delphi
Завдання для виконання
Графіка
Для малювання статичних малюнків використовується компонент PaintBox (панель System). Цей компонент розміщується на формі у вигляді прозорого пунктирного квадрата, і в його межах можна малювати. Малювання виконується зверненням до властивості Canvas (Графічна канва) цього компонента: PaintBox1.Canvas. У нього в свою чергу є властивість Pixels (PaintBox1.Canvas.Pixels), яке представляє собою матрицю, двовимірний масив заданого розміру - поточечний образ канви, кожний елемент - окрема точка. В Pixels [] відлік точок (пікселів екрану) починається з 0.
Координати x, y відраховуються від верхнього лівого кута, тобто він вважається точкою з координатою (0, 0), збільшення по осі x йде зліва направо, а по осі y - зверху вниз. Для конкретної точки вказується колір. Функція RGB () формує колір комбінацією інтенсивності червоного, зеленого і синього (інтенсивність задається числом від 0 до 255). Наприклад, чорний - RGB (0,0,0), червоний - rgb (255,0,0), синій - rgb (0,0,255), білий - rgb (255,255,255).
Мета роботи - створити програму, що виконує наступні дії: 1. Розмістити на формі компонент PaintBox. 2. Заповнити доступну канву 300 червоними крапками в випадкових позиціях при натисненні на деяку кнопку. 3. Для виходу з програми необхідно натиснути мишею на закриваючій кнопці в рядку заголовка.
Записати код в обробнику натиснення.
procedure TForm1.Button1Click(Sender: TObject);
var i,x,y: Integer;
begin
randomize;
for i := 1 to 300 do
begin
x := random(100);
y := random(100);
PaintBox1.Canvas.Pixels[x,y] := RGB(255,0,0);
end
end;
5.Змінити RGB(255,0,0) на RGB(random(255),random(255),random(255) ).
Заповнити фон чорним кольором перед початком виконання програми за допомогою методу канви FillRect. Метод викликається із зазначенням прямокутної області заливки кольором: FillRect (Rect (0, 0, 100, 100)) / / координати верхнього лівого і правого нижнього кутів
Вкладене слово Rect формує дане типу "прямокутник". Перед викликом FillRect треба вказати колір заливки: PaintBox1.Canvas.Brush.Color: = RGB (0,0,0);
procedure TForm1.Button1Click(Sender: TObject);
var i,x,y: Integer;
begin
PaintBox1.Canvas.Brush.Color := RGB(0,0,0);
PaintBox1.Canvas.FillRect(Rect(0,0,100,100));
for i := 1 to 300 do
begin
x := random(100);
y := random(100);
PaintBox1.Canvas.Pixels[x,y] := RGB(random(255),random(255),random(255));
end
end;
7. Заповнити канву випадковими різнокольоровими лініями різної товщини.
Лінія малюється за допомогою методів (спочатку задається початкова точка, потім кінцева): PaintBox1.Canvas.MoveTo (10,10); PaintBox1.Canvas.LineTo (50,50);
Колір лінії і товщина задаються властивістю канви Pen (олівець). Pen.Color – колір олівця), Pen.Width - товщина лінії в пікселях (за замовчуванням - 1).
for i := 1 to 300 do
begin
PaintBox1.Canvas.Pen.Color := RGB(random(255),random(255),random(255));
PaintBox1.Canvas.Pen.Width := random(3)+1;
x := random(100);
y := random(100);
PaintBox1.Canvas.MoveTo(x,y);
x := random(100);
y := random(100);
PaintBox1.Canvas.LineTo(x,y);
End
З
аповнити канву еліпсами випадковим чином (круги, кола - окремий випадок еліпса). Еліпси малюються методом Ellipse () з чотирма параметрами – координатами верхнього лівого і правого нижнього кутів прямокутника, в який еліпс вписується. Облямівка еліпса малюється у відповідності з параметрами властивості Pen канви, а заливається еліпс всередині кольором кисті Brush канви.
for i := 1 to 300 do
begin
// цвет и ширина каймы будущего эллипса
PaintBox1.Canvas.Pen.Color := RGB(random(255),random(255),random(255)) ;
PaintBox1.Canvas.Pen.Width := random(3)+1;
// цвет заливки внутренности эллипса
PaintBox1.Canvas.Brush.Color := rgb(random(255),random(255),random(255)) ;
Рис. 52.
Рис. 53.
74
// координаты углов прямоугольника, в который вписывается эллипс
x := random(150);
y := random(150);
x2 := random(150);
y2 := random(150);
// вписываем эллипс
PaintBox1.Canvas.Ellipse(x,y,x2,y2);
end;
9. Зробити канву на весь екран. Заповнити різнокольоровими прямокутниками в випадкових позиціях і випадкових розмірів за допомогою FillRect ().
10. Створити графічний образ так званогї множини Жюліа.
procedure TForm1.Button1Click(Sender: TObject);
var RE,IM,RE1,IM1: REAL ;
V,X,Y : INTEGER;
// вывод точки заданного цвета
procedure PUTPIXEL(x,y,c:Integer);
var cc: TColor;
begin
case c mod 8 of
0:cc:=clBlack;
1:cc:=clRed;
2:cc:=clLime;
3:cc:=clYellow;
4:cc:=clBlue;
5:cc:=clFuchsia;
6:cc:=clAqua;
7:cc:=clWhite;
end;
PaintBox1.Canvas.Pixels[x,y] := cc;
end;
procedure QWA ;
begin
RE1:=RE*RE-IM*IM;
IM1:=2*RE*IM;
RE:=RE1;
IM:=IM1;
end;
procedure KUB;
begin
RE1:=RE*(RE*RE-3*IM*IM);
IM1:=IM*(3*RE*RE-IM*IM);
RE:=RE1;
IM:=IM1;
end ;
Begin
PaintBox1.Canvas.Brush.Color := rgb(0,0,0);
PaintBox1.Canvas.FillRect(Rect(0,0,640,480));
X:=-320 ;
REPEAT Y:=-240 ;
REPEAT V:=0 ; RE:=-1.+0.001*X ; IM:=0+0.001*Y ;
REPEAT KUB; RE:=RE+1.00003 ; IM:=IM+1.01828201638 ;
if RE*RE > 50 then break;
75
if IM*IM > 50 then break;
V:=V+1 ;
UNTIL V>40 ;
if ( ABS(RE) > 10 ) or ( ABS(IM) > 1000)
then
begin
PUTPIXEL((X+320),(Y+240),TRUNC(V)) ;
end
else PUTPIXEL((X+320),(Y+240),0);
Y:=Y+1 ;
UNTIL Y > 241 ;
X:=X+1 ;
UNTIL X>320 ;
End;