⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 visual.pas.~12~

📁 delphi2007写的播放器源码。效果类似于千千静听。
💻 ~12~
字号:
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','');

  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 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 + -