Instrukcja 7a
Cel ćwiczenia : Napisanie aplikacji wyświetlającej przykładową kompozycję graficzną. Geometria jeża.
Rys. 1 Widok formularza z umieszczonymi komponentami
Uruchomić Delphi.
Umieścić na formularzu komponent Image i ustawić następujące parametry:
Width : 400
Height : 400
Umieścić na formularzu komponent GroupBox ( paleta Standard ). Własność Caption ustawić na Dane.
Na komponencie Groupbox1 umieścić 5 komponentów Edit i 5 komponentów Label. Poszczególne własności ustawić zgodnie z tabelami.
Tabela własności dla komponentów Edit
Domyślma nazwa: |
Name: |
Text: |
Edit1 |
En |
150 |
Edit2 |
Efi |
123 |
Edit3 |
Es |
5 |
Edit4 |
Edfi |
1 |
Edit5 |
Eds |
2 |
Tabela własności dla komponentów Label
Domyślna nazwa: |
Caption: |
Label1 |
Liczba kroków - n: |
Label2 |
Kąt obrotu - fi: |
Label3 |
Długość kroku - s: |
Label4 |
Przyrost kąta obrotu - dfi: |
Label5 |
Przyrost długości kroku - ds: |
Na formularzu umieścić komponent RadioGroup. Wybrać własność Items dla RadioGroup1 i wpisać następujące pozycje:
linii
tła
Własność Columns ustawić na: 2, Caption na: Wybór koloru, ItemIndex na: 0
W części private klasy TForm1 umieścić deklaracje zmiennych:
clTla,clLinii : TColor;
Wygenerować zdarzenie OnCreate dla komponentu Form1 i wpisać następujący kod:
procedure TForm1.FormCreate(Sender: TObject);
begin
clTla:=clBlack;
clLinii:=clWhite;
end;
Umieścić komponent ColorDialog i Button. Dla przycisku własność Caption zmienić na: Wybór koloru.
Utworzyć zdarzenie OnClick dla przycisku Button1 i wpisać kod:
procedure TForm1.Button1Click(Sender: TObject);
begin
if ColorDialog1.Execute then begin
case RadioGroup1.ItemIndex of
0 : clLinii := ColorDialog1.Color;
1 : clTla := ColorDialog1.Color;
end;
end;
end;
Umieścić kolejny komponent Button na formularzu, własność Caption ustawić na: Rysuj, utworzyć zdarzenie OnClick i wpisać następujący kod rysujący:
procedure TForm1.Button2Click(Sender: TObject);
label et;
var
N,krok,X,Y,X0,Y0,ZX,ZY: Integer;
alfa,fi,dfi,s,ds,xp,yp,xn,yn: Real;
begin
n:=StrToInt(En.Text);
fi:=StrToFloat(Efi.Text);
dfi:=StrToFloat(Edfi.Text);
s:=StrToFloat(Es.Text);
ds:=StrToFloat(Eds.text);
with Image1.Canvas do begin
Brush.Color:=clTla;
Brush.Style:=bsSolid;
FillRect(Rect(0,0,Image1.Width,Image1.Height));
Pen.Color:=clLinii;
fi:=fi*Pi/180; dfi:=dfi*Pi/180;
ZX:=Image1.Width; ZY:=Image1.Height;
xp:=ZX/2; yp:=ZY/2;
X0:=Round(xp); Y0:=Round(yp);
krok:=0; alfa:=0;
MoveTo(X0,Y0);
et:
krok:=krok+1;
xn:=xp+s*Cos(alfa);
yn:=yp+s*Sin(alfa);
X:=Round(xn);
Y:=Round(ZY-yn);
LineTo(X,Y);
if krok<=N then begin
alfa:=alfa+fi+dfi;
if fi>2*Pi then fi:=fi-2*Pi;
xp:=xn; yp:=yn; s:=s+ds;
goto et;
end;
end;
end;
Skompilować i uruchomić program przyciskiem F9 na klawiaturze komputera.
Rys. 2 Uruchomiony program
2