1
Instrukcja 7b
Cel ćwiczenia : Napisanie aplikacji wyświetlającej przykładową kompozycję
graficzną. Krzywe funkcyjne.
Rys. 1 Widok formularza z umieszczonymi komponentami
1. Uruchomić Delphi.
2. Umieścić na formularzu komponent Image i ustawić następujące parametry:
• Width : 400
•
Height : 400
3. Umieścić na formularzu komponent GroupBox (paleta Standard). Własność Caption
ustawić na Dane.
4. Na komponencie GroupBox1 umieścić komponent RadioGroup (paleta Standard).
Własność Caption ustawić na: Wybór funkcji. Wybrać własność Items dla
RadioGroup1 i wpisać następujące pozycje:
r = a*{abs[sin(k*fi)]+cos(k*fi)}
r = a*abs[sin(k*fi)+cos(k*fi)]
Własność ItemIndex ustawić na: 0.
2
5. Na komponencie GroupBox1 umieścić 3 komponenty LabeledEdit (paleta Additional).
Poszczególne własności ustawić zgodnie z tabelą.
Domyślma nazwa:
Name:
Text:
EditLabel->Caption
LabeledEdit1
LEN
400
Liczba punktów wykresu - N:
LabeledEdit2
LEa
110
Parametr - a:
LabeledEdit3
LEk
12
Parametr - k:
6. Na formularzu umieścić komponent RadioGroup. Wybrać własność Items dla
RadioGroup2 i wpisać następujące pozycje:
linii
tła
Własność Columns ustawić na : 2, Caption na : Kolor.
7. W części private klasy TForm1 umieścić deklaracje zmiennych:
clTla,clLinii : TColor;
8. Wygenerować zdarzenie OnCreate dla komponentu Form1 i wpisać następujący kod:
procedure TForm1.FormCreate(Sender: TObject);
begin
clTla:=clBlack;
clLinii:=clWhite;
end;
9. Umieścić komponent ColorDialog i Button. Dla przycisku własność Caption zmienić
na Wybór koloru.
10. Utworzyć zdarzenie OnClick dla przycisku Button1 i wpisać kod:
procedure TForm1.Button1Click(Sender: TObject);
begin
if ColorDialog1.Execute then begin
case RadioGroup2.ItemIndex of
0 : clLinii := ColorDialog1.Color;
1 : clTla := ColorDialog1.Color;
end;
end;
end;
11. 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);
var
3
i,nr,N,X,Y,X0,Y0,ZX,ZY: Integer;
k,a,fi,dfi,r,xp,yp: Real;
begin
nr:=RadioGroup1.ItemIndex;
N :=StrToInt(LEN.Text);
a :=StrToFloat(LEa.Text);
k :=StrToFloat(LEk.Text);
with Image1.Canvas do begin
Brush.Color:=clTla;
Brush.Style:=bsSolid;
FillRect(Rect(0,0,Image1.Width,Image1.Height));
Pen.Color:=clLinii;
dfi:=2*Pi/N;
ZX:=Image1.Width; ZY:=Image1.Height;
xp:=ZX/2; yp:=ZY/2;
X0:=Round(xp); Y0:=Round(yp);
MoveTo(Round(X0+a),Y0);
for i:=1 to N do begin
fi:=i*dfi;
if nr=1 then r:=a*(Abs(Sin(k*fi))+Cos(k*fi))
else r:=a*Abs(Sin(k*fi)+Cos(k*fi));
xp:=r*Cos(fi); yp:=r*Sin(fi);
X:=Round(X0+xp); Y:=Round(Y0-yp);
LineTo(X,Y);
end;
end;
end;
12. Skompilować i uruchomić program przyciskiem F9 na klawiaturze komputera.
4
Rys. 2 Uruchomiony program