1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
BoiteDessin: TPaintBox;
LabelResultat: TLabel;
Label1Y: TLabel;
Label1X: TLabel;
Label0: TLabel;
FrequenceMoins: TButton;
Frequenceplus: TButton;
procedure BoiteDessinClick(Sender: TObject);
procedure BoiteDessinPaint(Sender: TObject);
procedure FrequenceMoinsClick(Sender: TObject);
procedure FrequenceplusClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
frequence : Integer;
implementation
{$R *.dfm}
procedure TForm1.BoiteDessinClick(Sender: TObject);
var x, y,z :integer;
begin
end;
procedure TForm1.BoiteDessinPaint(Sender: TObject);
var x, y,z : Extended;
GX,GY,pasW,pasH,EchelleX,EchelleY : integer;
W,W2,H,H2, repere : Integer;
depart : array [1..2] of integer;
arrive : array [1..2] of integer;
first : boolean;
begin
EchelleX :=50;
EchelleY :=50;
W:= BoiteDessin.Width;
H:=BoiteDessin.Height;
PasW := w div 10;
Pash := H div 10;
W2 := W Div 2;
H2:= H div 2;
x:=0;
y:=0;
z:=0 ;
depart[1]:=0;
depart[2]:=0;
first:= true;
Form1.Caption:= 'Fréquence = ' + IntToStr (frequence) + ' Hz';
boiteDessin.Canvas.MoveTo(W2,0); { axe des y }
BoiteDessin.canvas.lineto(W2,H);
Label1Y.Caption := 'Axe Y';
for repere := 1 to (H div echelleY) do
begin
if ((H div (2*echelleY))-repere+1 ) <>0 then
BoiteDessin.canvas.TextOut(w2-4,(repere*echelleY), {echelle Y}
IntToStr( (H div (2*echelleY))-repere+1 ));
end;
for repere := 1 to (W div echelleX) do
begin
BoiteDessin.canvas.TextOut((repere*EchelleX),h2-10, {echelle x}
IntToStr(repere-(w div (2*echelleX))));
end;
boiteDessin.Canvas.MoveTo(0,H2); { axe des x}
BoiteDessin.canvas.lineto(W,H2);
Label1X.Caption := 'Axe X';
For GX := 0 TO W do
Begin
x:= frequence*PI/W*GX-PI;
y := sin(x);
GY := round(-W/2/PI*Y+H/2);
arrive[1] := GY;
arrive[2] := GX;
if first then
begin
depart[1] := GY;
depart[2] := GX;
first := false;
BoiteDessin.Canvas.MoveTo(depart[2],depart[1])
end;
BoiteDessin.canvas.lineto(arrive[2],arrive[1]);
depart[1]:=arrive[1];
depart[2]:=arrive[2];
End;
end;
procedure FrequenceMoins(Sender: TObject);
begin
end;
procedure TForm1.FrequenceMoinsClick(Sender: TObject);
begin
dec(frequence);
if frequence <1 then frequence :=1;
end;
procedure TForm1.FrequenceplusClick(Sender: TObject);
begin
inc(frequence);
end;
begin
frequence :=10;
end. |
Partager