📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, ExtDlgs;
type
TForm1 = class(TForm)
Panel1: TPanel;
Image1: TImage;
OpenDialog1: TOpenDialog;
Memo1: TMemo;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
RadioGroup1: TRadioGroup;
SavePictureDialog1: TSavePictureDialog;
BitBtn4: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure DrawBlack(nImage:TImage);
procedure DraGrapzb(nImage:TImage);
procedure DrawGrapdata(nImage:TImage);
end;
var
Form1: TForm1;
implementation
var
totalnum,beishu:Integer;
YJstr:array[0..6] of String;
Title:array[0..12] of String;
{$R *.dfm}
procedure TForm1.DrawGrapdata(nImage:TImage);
var
i,Sx,Sy,Ex,Ey,xhnum,tempx,tempy:Integer;
ntempfloat:Single;
begin
nImage.Canvas.Pen.Color:=clRed;
nImage.Canvas.Pen.Style:=psSolid;
totalnum:=memo1.Lines.Count;
if totalnum > 2 then
begin
xhnum:= totalnum div 2;
for i:=0 to xhnum-1 do //开始绘图
begin
try //读X轴数据
tempx:=strtoint(Memo1.Lines[2*i])
except
ShowMessage('读第:'+Inttostr(2*i)+'行出错。');
exit;
end;
//读Y行数据
try
ntempfloat:=strtoFloat(Memo1.Lines[2*i+1]);
except
ShowMessage('读第:'+Inttostr(2*i+1)+'行出错。');
exit;
end;
//开始判读数据,并转换
tempy:=Trunc(ntempfloat);
if tempy <10 then
begin
Ey:=nImage.Top+nImage.Height-50;
end
else if tempy <100 then
begin
Ey:=nImage.Top+nImage.Height-50-tempy;
end
else if tempy <1000 then
begin
Ey:=nImage.Top+nImage.Height-150-tempy div 10;
end
else if tempy <10000 then
begin
Ey:=nImage.Top+nImage.Height-250-tempy div 100;
end
else if tempy >10000 then
begin
Ey:=nImage.Top+nImage.Height-350;//-tempy div 1000;
end;
//开始绘图
if RadioGroup1.ItemIndex=2 then
begin
Sx:=nImage.Left+50+tempx * beishu ;
end
else
Sx:=nImage.Left+50+tempx div beishu;
Ex:=Sx;
Sy:=nImage.Top+nImage.Height-50;
nImage.Canvas.MoveTo(Sx,Sy);
nImage.Canvas.LineTo(Ex,Ey);
end; // end for i:=0 to xhnum-2 do //开始绘图
end; // end if totalnum > 2 then
end;
procedure TForm1.DraGrapzb(nImage:TImage);
var
Sx,Sy,Ex,Ey,i,SWGHeight,SWGWidth:Integer;
begin
nImage.Canvas.Pen.Color:=clBlack;
nImage.Canvas.Pen.Style:=psSolid;
nImage.Canvas.Font.Color :=clBlack;
// GWidth:=80;
SWGHeight:=100;
SWGWidth:=100;
nImage.Canvas.Pen.Width :=2;
//--绘制X轴
Sx:=nImage.Left +50;
Sy:=nImage.Top+nImage.Height-50;
Ex:=nImage.Left+nImage.Width -20;
Ey:=Sy;
nImage.Canvas.MoveTo(Sx,Sy);
nImage.Canvas.LineTo(Ex,Ey);
nImage.Canvas.MoveTo(Ex,Ey);//绘制X轴箭头
nImage.Canvas.LineTo(Ex-10,Ey+5);
nImage.Canvas.MoveTo(Ex,Ey);//绘制X轴箭头
nImage.Canvas.LineTo(Ex-10,Ey-5);
nImage.Canvas.TextOut(Ex-20,Ey-20,'X');
for i:=1 to 11 do //绘制X刻度档位
begin
Sx:=nImage.Left +50+i*SWGWidth;
Ex:=Sx;
SY:=nImage.Top+nImage.Height-50;
EY:=Sy-5;
nImage.Canvas.MoveTo(Sx,Sy);
nImage.Canvas.LineTo(Ex,Ey);
nImage.Canvas.TextOut(Ex-10,Ey+10,Title[i-1]);
end;
//--绘制Y轴
Sx:=nImage.Left +50;
Sy:=nImage.Top+nImage.Height-50;
Ex:=Sx;
Ey:=nImage.Top;
nImage.Canvas.MoveTo(Sx,Sy);
nImage.Canvas.LineTo(Ex,Ey);
nImage.Canvas.MoveTo(Ex,Ey);//绘制Y轴箭头
nImage.Canvas.LineTo(Ex-5,Ey+10);
nImage.Canvas.MoveTo(Ex,Ey);//绘制Y轴箭头
nImage.Canvas.LineTo(Ex+5,Ey+10);
nImage.Canvas.TextOut(Ex+10,Ey,'Y');
for i:=1 to 3 do //绘制Y刻度档位
begin
Sx:=nImage.Left +50;
Ex:=nImage.Left +55;
SY:=nImage.Top+nImage.Height-50-i*SWGHeight;
EY:=Sy;
nImage.Canvas.MoveTo(Sx,Sy);
nImage.Canvas.LineTo(Ex,Ey);
nImage.Canvas.TextOut(Sx-40,Sy-5,YJstr[i]);
end;
nImage.Canvas.Pen.Width :=1;
end;
procedure TForm1.DrawBlack(nImage:TImage);
begin
nImage.Canvas.Pen.Color:=clBlack;
nImage.Canvas.Pen.Style:=psSolid;
nImage.Canvas.Rectangle(nImage.Canvas.ClipRect);
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
spathstr:String;
begin
if OpenDialog1.Execute then
begin
spathstr:=OpenDialog1.FileName;
//得文件共有到多少行
memo1.Lines.LoadFromFile(spathstr);
end;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
DrawBlack(Image1);
DraGrapzb(Image1);
DrawGrapdata(Image1);
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Memo1.Lines.Clear;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
//初始化
YJstr[1]:='10E+1';
YJstr[2]:='10E+2';
YJstr[3]:='10E+3';
//初始化X标记
Title[0]:='100Hz';
Title[1]:='200Hz';
Title[2]:='300Hz';
Title[3]:='400Hz';
Title[4]:='500Hz';
Title[5]:='600Hz';
Title[6]:='700Hz';
Title[7]:='800Hz';
Title[8]:='900Hz';
Title[9]:='1000Hz';
Title[10]:='1100Hz';
beishu:=1;
// Title[11]:='1200Hz';
DrawBlack(Image1);
DraGrapzb(Image1);
end;
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex=0 then
begin
//初始化X标记
Title[0]:='100Hz';
Title[1]:='200Hz';
Title[2]:='300Hz';
Title[3]:='400Hz';
Title[4]:='500Hz';
Title[5]:='600Hz';
Title[6]:='700Hz';
Title[7]:='800Hz';
Title[8]:='900Hz';
Title[9]:='1000Hz';
Title[10]:='1100Hz';
beishu:=1;
end
else if RadioGroup1.ItemIndex=1 then
begin
//初始化X标记
Title[0]:='500Hz';
Title[1]:='1000Hz';
Title[2]:='1500Hz';
Title[3]:='2000Hz';
Title[4]:='2500Hz';
Title[5]:='3000Hz';
Title[6]:='3500Hz';
Title[7]:='4000Hz';
Title[8]:='4500Hz';
Title[9]:='5000Hz';
Title[10]:='5500Hz';
beishu :=5;
end
else
begin
//初始化X标记
Title[0]:='20Hz';
Title[1]:='40Hz';
Title[2]:='60Hz';
Title[3]:='80Hz';
Title[4]:='100Hz';
Title[5]:='120Hz';
Title[6]:='140Hz';
Title[7]:='160Hz';
Title[8]:='180Hz';
Title[9]:='200Hz';
Title[10]:='220Hz';
beishu :=5;
end;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
if SavePictureDialog1.Execute then
Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -