📄 visual.pas.~13~
字号:
unit visual;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComVariable,ExtDlgs, inifiles,ExtCtrls, StdCtrls, ComCtrls,
circle_vis,osc_vis,spectrum_vis;
type
TForm4 = class(TForm)
Panel1: TPanel;
RadioDraw: TRadioGroup;
RadioMode: TRadioGroup;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label6: TLabel;
Label7: TLabel;
TrackOff: TTrackBar;
TrackRes: TTrackBar;
TrackY: TTrackBar;
TrackX: TTrackBar;
PanelBkg: TPanel;
PanelPen: TPanel;
GroupBox3: TGroupBox;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
SpecTrackWidth: TTrackBar;
PanelPeakColor: TPanel;
CheckSpecPeaks: TCheckBox;
SpinLineFall: TUpDown;
SpinPeakFall: TUpDown;
EditLineFall: TEdit;
EditPeakFall: TEdit;
GroupBox2: TGroupBox;
TrackRad: TTrackBar;
Button3: TButton;
Button2: TButton;
OpenDialog: TOpenDialog;
ColorDialog: TColorDialog;
OpenPictureDialog: TOpenPictureDialog;
PaintFrame: TPaintBox;
BackImageRes: TImage;
Button1: TButton;
CheckTran: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure RadioModeClick(Sender: TObject);
procedure TrackOffChange(Sender: TObject);
procedure TrackResChange(Sender: TObject);
procedure TrackRadChange(Sender: TObject);
procedure PanelBkgClick(Sender: TObject);
procedure PanelPenClick(Sender: TObject);
procedure SpecTrackWidthChange(Sender: TObject);
procedure PanelPeakColorClick(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure CheckSpecPeaksClick(Sender: TObject);
procedure SpinLineFallClick(Sender: TObject; Button: TUDBtnType);
procedure SpinPeakFallClick(Sender: TObject; Button: TUDBtnType);
procedure LoadConfig;
procedure SaveConfig;
procedure SetBackImage;
procedure CheckTranClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
BackFile:string;
Src:TRect;
IsActive:Boolean;
implementation
uses main;
{$R *.dfm}
procedure tform4.SaveConfig;
var
filename:string;
begin
filename:=path+'visual.vis';
if FileExists(filename) then Deletefile(filename);
ini:=tinifile.Create(filename);
ini.WriteBool('Config','Transparent',CheckTran.Checked);
ini.WriteString('Config','BackImage',BackFile);
ini.WriteInteger('Config','X',trackX.Position);
ini.WriteInteger('Config','Y',trackY.Position);
ini.WriteInteger('Config','OffSet',trackOff.Position);
ini.WriteInteger('Config','Res',trackRes.Position);
ini.WriteInteger('Config','BackColor',PanelBkg.Color);
ini.WriteInteger('Config','PenColor',PanelPen.Color);
ini.WriteInteger('Config','RadioDraw',RadioDraw.ItemIndex);
ini.WriteInteger('Config','RadioMode',RadioMode.ItemIndex);
ini.WriteInteger('Config','Radius',TrackRad.Position);
ini.WriteBool('Config','IsPeak',CheckSpecPeaks.Checked);
ini.WriteInteger('Config','PeakColor',PanelPeakColor.Color);
ini.WriteInteger('Config','SpecTrackWidth',SpecTrackWidth.Position);
ini.WriteInteger('Config','LineFall',SpinLineFall.Position);
ini.WriteInteger('Config','PeakFall',SpinPeakFall.Position);
ini.Free;
end;
procedure tform4.LoadConfig;
var
filename:string;
begin
filename:=path+'visual.vis';
if not(FileExists(filename)) then exit;
ini:=tinifile.Create(filename);
CheckTran.Checked:=ini.ReadBool('config','Transparent',true);
BackFile:=ini.ReadString('config','backimage','');
if CheckTran.Checked or (BackFile<>'') then IsActive:=true
else IsActive:=false;
trackX.Position:=ini.ReadInteger('config','X',50);
trackY.Position:=ini.ReadInteger('config','Y',50);
trackOff.Position:=ini.ReadInteger('config','OffSet',20);
trackRes.Position:=ini.ReadInteger('config','Res',2);
PanelBkg.Color:=ini.ReadInteger('config','BackColor',$0);
CircleScope.BackColor := PanelBkg.Color;
OcilloScope.BackColor := PanelBkg.Color;
Spectrum.BackColor := PanelBkg.Color;
PanelPen.Color := ini.ReadInteger('config','PenColor',$FFFFFF);
CircleScope.Pen := PanelPen.Color;
OcilloScope.Pen := PanelPen.Color;
Spectrum.Pen := PanelPen.Color;
RadioDraw.ItemIndex:=ini.ReadInteger('config','RadioDraw',0);
RadioMode.ItemIndex:=ini.ReadInteger('config','RadioMode',0);
TrackRad.Position:=ini.ReadInteger('config','Radius',20);
CheckSpecPeaks.Checked:=ini.ReadBool('config','IsPeak',true);
PanelPeakColor.Color := ini.ReadInteger('config','peakcolor',$ffff00);
Spectrum.Peak := PanelPeakColor.Color;
SpecTrackWidth.Position:=ini.ReadInteger('config','spectrackwidth',5);
SpinLineFall.Position:=ini.ReadInteger('config','linefall',3);
SpinPeakFall.Position:=ini.ReadInteger('config','peakfall',1);
SetBackImage;
ini.Free;
end;
procedure TForm4.Button1Click(Sender: TObject);
begin
hide;
SaveConfig;
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
//设置背景图片
OpenPictureDialog.Title := 'Open Background Bitmap';
OpenPictureDialog.Filter := 'BMP|*.bmp';
if not OpenPictureDialog.Execute then exit;
BackFile:=OpenPictureDialog.FileName;
IsActive:=true;
CheckTran.Checked:=false;
SetBackImage;
end;
procedure tform4.SetBackImage;
begin
Src.Top:=form1.BackImage.Top;
Src.Left:=form1.BackImage.Left;
Src.Bottom:=form1.BackImage.Top+form1.BackImage.Height;
Src.Right:=form1.BackImage.Left+form1.BackImage.Width;
if CheckTran.Checked=false then
begin
if BackFile<>'' then
begin
BackImageRes.Picture.LoadFromFile(BackFile);
form1.BackImage.Picture.LoadFromFile(BackFile);
end
else
begin
BackImageRes.Canvas.CopyRect
(form1.BackImage.ClientRect,form1.imgPanel.Canvas,Src);
form1.BackImage.Canvas.CopyRect
(form1.BackImage.ClientRect,form1.imgPanel.Canvas,Src);
end;
end
else
begin
BackImageRes.Canvas.CopyRect
(BackImageRes.ClientRect,form1.imgPanel.Canvas,Src);
form1.BackImage.Canvas.CopyRect
(form1.BackImage.ClientRect,form1.imgPanel.Canvas,Src);
end;
CircleScope.SetBackGround(IsActive, BackImageRes.Picture.Graphic);
CircleScope.SetBackGround(IsActive, form1.BackImage.Picture.Graphic);
CircleScope.Pen := PanelPen.Color;
OcilloScope.SetBackGround(IsActive, BackImageRes.Picture.Graphic);
OcilloScope.SetBackGround(IsActive, form1.BackImage.Picture.Graphic);
OcilloScope.Pen := PanelPen.Color;
Spectrum.SetBackGround(IsActive, BackImageRes.Picture.Graphic);
Spectrum.SetBackGround(IsActive, form1.BackImage.Picture.Graphic);
Spectrum.Pen := PanelPen.Color;
end;
procedure TForm4.Button3Click(Sender: TObject);
begin
BackFile:='';
IsActive:=false;
CheckTran.Checked:=False;
SetBackImage;
end;
procedure TForm4.CheckSpecPeaksClick(Sender: TObject);
begin
//是否显示矩形的顶峰
Spectrum.DrawPeak := CheckSpecPeaks.Checked;
end;
procedure TForm4.CheckTranClick(Sender: TObject);
begin
if CheckTran.Checked then IsActive:=true
else IsActive:=false;
SetBackImage;
end;
procedure TForm4.FormCreate(Sender: TObject);
begin
Width:=panel1.Width;Height:=panel1.Height;
LoadConfig;
end;
procedure TForm4.PanelBkgClick(Sender: TObject);
begin
//设置背景颜色
ColorDialog.Color := PanelBkg.Color;
if not ColorDialog.Execute then Exit;
PanelBkg.Color := ColorDialog.Color;
CircleScope.BackColor := ColorDialog.Color;
OcilloScope.BackColor := ColorDialog.Color;
Spectrum.BackColor := ColorDialog.Color;
end;
procedure TForm4.PanelPeakColorClick(Sender: TObject);
begin
//设置矩形顶峰颜色
ColorDialog.Color := PanelPeakColor.Color;
if not ColorDialog.Execute then Exit;
PanelPeakColor.Color := ColorDialog.Color;
Spectrum.Peak := ColorDialog.Color;
end;
procedure TForm4.PanelPenClick(Sender: TObject);
begin
//设置波形颜色
ColorDialog.Color := PanelPen.Color;
if not ColorDialog.Execute then Exit;
PanelPen.Color := ColorDialog.Color;
CircleScope.Pen := ColorDialog.Color;
OcilloScope.Pen := ColorDialog.Color;
Spectrum.Pen := ColorDialog.Color;
end;
procedure TForm4.RadioModeClick(Sender: TObject);
begin
//模式选择
//线条 =0,实体=1,像素=2
CircleScope.Mode := RadioMode.ItemIndex;
OcilloScope.Mode := RadioMode.ItemIndex;
Spectrum.Mode := RadioMode.ItemIndex;
end;
procedure TForm4.SpecTrackWidthChange(Sender: TObject);
begin
//设置矩形宽度1-12
Spectrum.Width := SpecTrackWidth.Position;
end;
procedure TForm4.SpinLineFallClick(Sender: TObject; Button: TUDBtnType);
begin
Spectrum.LineFallOff := SpinLineFall.Position;
end;
procedure TForm4.SpinPeakFallClick(Sender: TObject; Button: TUDBtnType);
begin
Spectrum.PeakFallOff := SpinPeakFall.Position;
end;
procedure TForm4.TrackOffChange(Sender: TObject);
begin
//偏移大小设置 0-120
CircleScope.Offset := TrackOff.Position;
OcilloScope.Offset := TrackOff.Position;
Spectrum.Height := TrackOff.Position;
end;
procedure TForm4.TrackRadChange(Sender: TObject);
begin
//10-50,设置圆形的大小
CircleScope.Radius := TrackRad.Position;
end;
procedure TForm4.TrackResChange(Sender: TObject);
begin
//1-2
CircleScope.Res := TrackRes.Position;
OcilloScope.Res := TrackRes.Position;
Spectrum.Res := TrackRes.Position;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -