PROGRAMOWANIE WIZUALNO

Transkrypt

PROGRAMOWANIE WIZUALNO
Programowanie Wizualno-Obiektowe
Zajęcia z Delphi 4, program 1
Programowanie Wizualno-Obiektowe
(studia zaoczne - inżynieria komputerowa)
Zajęcia z Delphi 4, program 2
Temat:
Obsługa grafiki w Delphi, rysowanie wykresów.
Zadanie:
Program powinien rysować oraz tablicować funkcję
f ( x) = x 2
1.
Otwieramy nowa aplikację File>NewApplication
2.
Zapisujemy projekt przy pomocy File>Save All w katalogu gdzie będzie kompilowany nasz
projekt
3.
Dodajemy odpowiednie komponenty w kolejności
• Panel na którym będzie znajdować się wykres TPanel (paleta Standard)
• Obszar do rysowania TPaintBox (paleta System)
• Komponent zawierający tabelę z wartościami funkcji TValueListEditor (paleta
Additional)
• Przycisk do generowania danych TButton (paleta Standard)
• Przycisk do rysowania wykresu TButton (paleta Standard)
• Etykiety opisujące TLabel (paleta Standard)
1
Programowanie Wizualno-Obiektowe
Zajęcia z Delphi 4, program 1
4.
Aby tablicować funkcję można wykorzystać komponent automatycznie generujący tablicę z
danymi (o odpowiednio opisanych rzędach i kolumnach). Komponent TValueListEditor
pozwala na takie tablicowanie, aby opisać odpowiednie kolumny tego komponentu należy
wybrać jego własność TitleCaptions, jest to obiekt klasy TStrings tak więc automatycznie
otwiera się okno do ustalenia poszczególnych nazw kolumn, nazwać kolumny ('x', 'f(x)').
5.
Zdefiniować typ rekordowy punktów opisanych wartościami rzeczywistymi
type
TPunkt_real=record
x:real;
y:real;
end;
a następnie zadeklarować odpowiednie tablice służące do przechowywania wartości
policzonej funkcji, oraz przeskalowanych punktów wykresu
private
Punkty:array[1..100] of TPunkt_real;
Wykres:array[1..100] of TPoint;
liczba_punktow:integer;
{ Private declarations }
public
6.
Aby wygenerować odpowiednie dane i wpisać je w pola odpowiadające argumentom i
wartościom funkcji należy obsłużyć zdarzenie OnClick przycisku służącego do generowania
danych. Dodanie kolejnego rzędu do tabeli z danymi wykonuje się przy pomocy metody
Form1.ValueListEditor1.InsertRow(kolumna_1:string,...,kolumna_i:string).
Generowanie danych dla zadanej funkcji można zrealizować przy pomocy następującej
procedury:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to 100 do
begin
Punkty[i].x:=i*0.1;
2
Programowanie Wizualno-Obiektowe
Zajęcia z Delphi 4, program 1
Punkty[i].y:=sqr(Punkty[i].x);
Form1.ValueListEditor1.InsertRow(FloatToStr(Punkty[i].x),FloatT
oStr(Punkty[i].y),true);
end;
end;
Form1.Button2.Enabled:=true;
7.
Następnie należy zapisać dane w tablicy w ten sposób, aby można było je pokazać na ekranie,
w polu przeznaczonym na wykres. Nasze dane należy najpierw przeskalować tak aby miały
wartości dodatnie i całkowite z zakresu
x:{0..PaintBox.Width}, y:{0..PaintBox.Height}
Do odpowiednich obliczeń należy znaleźć wartości maksymalna i minimalną odpowiednio x i
f(x) i określić odpowiednie współczynniki skalujące. Należy też uwzględnić że wartości
funkcji mogą być ujemne i że należy je zamienić tak aby można je było narysować na ekranie.
Do rysowania funkcji można wykorzystać następującą funkcję (obsługa zdarzenia OnClick
przycisku do rysowania wykresu).
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
wysokosc,szerokosc:integer;
max_x, max_y, min_x, min_y:real;
begin
wysokosc:=Form1.PaintBox1.Height;
szerokosc:=Form1.PaintBox1.Width;
{skalowanie punktów}
max_x:=Punkty[1].x;
max_y:=Punkty[1].y;
min_x:=Punkty[1].x;
min_y:=Punkty[1].y;
for i:=1 to 100 do
begin
if Punkty[i].x>max_x
if Punkty[i].y>max_y
if Punkty[i].x<min_x
if Punkty[i].y<min_y
end;
then
then
then
then
max_x:=Punkty[i].x;
max_y:=Punkty[i].y;
min_x:=Punkty[i].x;
min_y:=Punkty[i].y;
for i:=1 to 100 do
begin
Wykres[i].X:=floor(szerokosc*(Punkty[i].x-min_x)/(max_xmin_x));
Wykres[i].Y:=floor(wysokosc*(Punkty[i].y-min_y)/(max_ymin_y));
end;
{lustrzane odbicie punktów}
for i:=1 to 100 do
begin
Wykres[i].Y:=abs(wysokosc-Wykres[i].Y);
end;
end;
{rysowanie punktów}
Form1.PaintBox1.Canvas.Polyline(Wykres);
3
Programowanie Wizualno-Obiektowe
Zajęcia z Delphi 4, program 1
UWAGA: Można dodatkowo zablokować przycisk do rysowania danych w przypadku kiedy
nie są wygenerowane żadne dane, i odblokować go dopiero gdy dane zostaną utworzone i
wypisane w tabeli. Do blokowania przycisku służy jego własność Enabled będąca zmienną
typu logicznego (false - zablokowany, true - odblokowany).
Wynik działania programu:
4

Podobne dokumenty