unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ExtCtrls;type TForm1 = class(TForm) PaintBox1: TPaintBox; MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; sin1: TMenuItem; cos1: TMenuItem; cls1: TMenuItem; procedure FormPaint(Sender: TObject); procedure sin1Click(Sender: TObject); procedure cos1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure cls1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.cls1Click(Sender: TObject); //清除sin和cos曲线begin paintbox1.Refresh;end;procedure TForm1.cos1Click(Sender: TObject); //画出cos函数曲线var oldx, oldy, t: integer; xt, yt: real;begin oldx := round(form1.ClientWidth / 2); oldy := round(form1.ClientHeight / 2); for t := -oldx to oldx do begin xt := t / 20; yt := cos(xt); paintbox1.Canvas.Pixels[t + oldx, oldy + round(yt * 20)] := clblack; end;end;procedure TForm1.FormPaint(Sender: TObject); //当窗体刷新时执行此事件var oldx, oldy, xt, yt: integer; st: real; rect1: trect;begin with paintbox1 do begin top := 0; left := 0; width := form1.ClientWidth; height := form1.ClientHeight; canvas.Pen.Color := clblack; end; oldx := round(form1.ClientWidth / 2); //获得窗体的原点x坐标 oldy := round(form1.ClientHeight / 2); //获得窗体的原点y坐标 paintbox1.Canvas.MoveTo(oldx,0); paintbox1.Canvas.LineTo(oldx,paintbox1.Height); //画y轴的轴线 paintbox1.Canvas.MoveTo(0,oldy); paintbox1.Canvas.LineTo(paintbox1.Width,oldy); //画x轴的轴线 for xt := -9 to 9 do //画出x轴的坐标 if xt <> 0 then begin st := xt * 10 * pi; paintbox1.Canvas.MoveTo(oldx + round(st),oldy-1); paintbox1.Canvas.LineTo(oldx + round(st),oldy); paintbox1.Canvas.TextOut(oldx + round(st) - 10, oldy + 1, inttostr(xt) + '/2π'); end; for yt := -9 to 9 do //画出y轴的坐标 if yt <> 0 then begin st := yt * 20; paintbox1.Canvas.MoveTo(oldx + 1,oldy + round(st)); paintbox1.Canvas.LineTo(oldx,oldy + round(st)); paintbox1.Canvas.TextOut(oldx - 20, oldy + round(st), inttostr(yt)); end;end;procedure TForm1.N2Click(Sender: TObject); //退出begin form1.close;end;procedure TForm1.sin1Click(Sender: TObject); //画出sin曲线var oldx, oldy, t: integer; xt, yt: real;begin oldx := round(form1.ClientWidth / 2); oldy := round(form1.ClientHeight / 2); for t := -oldx to oldx do begin xt := t / 20; yt := sin(xt); paintbox1.Canvas.Pixels[t + oldx, oldy + round(yt * 20)] := clblack; end;end;end.