unit Unit1;
interface
uses
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.
