Programowanie w języku Delphi » Gotowce

Wykres funkcji sinus

  • 2 komentarze
  • 2553 odsłony
  • Oceń ten tekst jako pierwszy
Wiele osób nie wie jak to coś zrobić, zatem od razu zacznę od konkretów.

Robimy najpierw formę wielkości 644 (szerokość) oraz 375 (wysokość). Teraz ustawiamy jeszcze Border Style na „Single”, żeby nie można było tego zmieniać. Następnym krokiem jest wstawienie naszego tzw. miejsca do rysowania, ja użyłem Shape (biały prostokąt wypełniający w całości formę). Gdy już to zrobimy, możemy jechać dalej…

Na samej górze wstawimy dwa przyciski o podpisach odpowiednio: 'Pokaż wykres' oraz 'Rysuj funkcję sinus'. Chyba wiadomo, po co one. Nazwijcie je odpowiednio: 'wykres' oraz 'sinus'.

Teraz w zdarzeniu 'OnCreate' formy piszemy:
 
procedure TForm1.FormCreate(Sender: TObject);
begin
sinus.Enabled:=false;
end;


Następnie klikamy dwa razy na przycisk “wykres” i piszemy:

procedure TForm1.wykresClick(Sender: TObject);
 
begin
wykres.Enabled:=false;
Canvas.Pen.Color := clBlack;
Canvas.Pen.Style := psSolid;
Canvas.Brush.Style := bsClear;
Canvas.Font.Color := clBlue;
 
// uklad wspolrzednych
Canvas.MoveTo(20, 100);   // [ustawienie] góra "y"
Canvas.LineTo(20, 300);   // os "y"
Canvas.MoveTo(20, 200);   // [ustawienie] srodek ukladu
Canvas.LineTo(400, 200);  // os "x"
 
Canvas.TextOut(19, 60, 'Wykres funkcji sinus!');     // tytul
Canvas.TextOut(5, 100, 'y');                         // napis "y"
Canvas.TextOut(407, 200, 'x');                     // napis "x"
Canvas.TextOut(10, 200, '0');                      // "0"
Canvas.TextOut(95, 205, 'Pi/2');                   // Pi/2
Canvas.TextOut(170, 205, 'Pi');                    // Pi
Canvas.TextOut(255, 205, '(3/2*Pi)');              // (3/2)*Pi
Canvas.TextOut(334, 205, '2*Pi');                  // 2*Pi
 
canvas.pen.mode := pmblack;
Canvas.Brush.Color := clRed;
canvas.Polygon([point(400,200),point(390,195),Point(390,205)]);      //strzalka "x"
canvas.Polygon([point(20,100),point(15,110),Point(25,110)]);      //strzalka "y"
sinus.Enabled:=true;
end;


Podobnie z przyciskiem 'sinus':

procedure TForm1.sinusClick(Sender: TObject);
var
x,y:integer;
y2,x2,i:real;
 
begin
sinus.Enabled:=false;
Canvas.Pen.Color := clblue;
Canvas.Pen.Style := psSolid;
Canvas.Brush.Style := bsClear;
canvas.pen.mode := pmblack;
Canvas.Brush.Color := clRed;
 
// wykres sin(x)
 
i:=0.0;
REPEAT
i:=i + 0.02;
x2:=20+i*50;
x:=round(x2);
y2:=200-(sin(i)*50);
y:=round(y2);
Canvas.Pixels[x, y] := clRed;
sleep(100);
UNTIL i>=6.29;
end;


No i gotowe. Jeżeli natomiast chcemy, aby sinusoida pokazała się od razu, wykreślamy wers kodu 'sleep(100);'.

Oczywiście nie jest to profesjonalny wykres, ale za to pełen gotowiec, i powinien działać u każdego !

2 komentarze

Zawadzki 2005-05-04 11:40

hehehe fajne :DDDDD
podoba mi sie :p

bravo :)

Dryobates 2003-04-09 15:03

Fajna sinusoida, ale z kropek. W dziale FAQ jest opis jak zrobić ciągłą przy wykorzystaniu lini lub krzywych Beziera.