📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
PaintBox1: TPaintBox;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
Edit3: TEdit;
Label3: TLabel;
Edit4: TEdit;
Label4: TLabel;
Button2: TButton;
Label5: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
x:real;
y:real;
ll:real;
px:longint;
py:longint;
halfheight:longint;
fudu:real;
chuxiang:real;
xt:integer;
yt:integer;
st:real;
xold:integer;
yold:integer;
begin
paintbox1.repaint;
xold:=round(paintbox1.width div 2);
yold:=round(paintbox1.height div 2);
fudu:=strtoint(edit1.text);
chuxiang:=strtoint(edit2.text)*pi/180;
with paintbox1 do begin
canvas.Pen.Width:=2; //绘制坐标轴
halfheight:=height div 2;
canvas.MoveTo(0,halfheight);
canvas.lineTo(width,halfheight);
canvas.MoveTo(width-2,halfheight);
canvas.lineTo(width-10,halfheight-8);
canvas.MoveTo(width-2,halfheight);
canvas.lineTo(width-10,halfheight+8);
/////////////////////////////// 绘画箭头
canvas.MoveTo(0,0);
canvas.lineTo(0,height);
canvas.MoveTo(1,2);
canvas.lineTo(0,8);
canvas.MoveTo(1,2);
canvas.lineTo(8,12);
canvas.Pen.Width:=5;
for px:=0 to width do
begin
x:=px*(4*pi/paintbox1.width)-2*pi; //绘制正弦曲线
y:=fudu*20*sin(x+chuxiang);
py:=trunc(y)+yold+8;
canvas.Pixels[px,py-1]:=rgb(0,0,225);
canvas.Pixels[px,py]:=rgb(0,0,225);
canvas.Pixels[px,py+1]:=rgb(0,0,225);
ll:=trunc(px*100/xold);
if abs(y)<2 then
paintbox1.canvas.textout(px,yold+1,floattostr(ll)+'/50π') //绘制Y=0的点
end ;
paintbox1.canvas.textout(xold*2-20,yold+20,'X');
paintbox1.canvas.textout(20,10,'Y');
for yt:=-9 to 9 do //标注Y尺度值
if yt<>0 then
begin
st:=-yt*20;
paintbox1.canvas.moveto(xold+1,yold+round(st));
paintbox1.canvas.moveto(xold,yold+round(st));
paintbox1.canvas.textout(5,yold+round(st),inttostr(yt));
end;
canvas.Pen.color:=rgb(100,100,25);
for xt:=-10 to 10 do //绘制峰值线
if xt<>0 then
begin
st:=xt*2*xold/10;
paintbox1.canvas.textout(round(st),yold-round(fudu)*20,'-');
end;
end ;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.text:='5';
edit2.text:='0';
edit3.text:='0';
edit4.text:='0';
end;
procedure TForm1.Button2Click(Sender: TObject);
var
jj:real;
jjy:real;
begin
jj:=pi*strtoint(edit3.text)/180;
jjy:=sin(jj);
edit4.text:=floattostr(jjy);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -