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

📄 equalyzer.pas

📁 Some source code for creating a media player in delphi
💻 PAS
字号:
unit equalyzer;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, IniFiles,
  Dialogs, VsImage, VsSlider, VsControls, VsSkin, VsButtons, VsComposer,
  VsImageText, ExtCtrls, VsCheckBox, CommonTypes, AudioObject, Menus;

type
  TFormEQ = class(TForm)
    VsComposer: TVsComposer;
    mainSkin: TVsSkin;
    VsButton1: TVsButton;
    VsButton2: TVsButton;
    Slide1: TVsSlider;
    ListSlBack: TVsImage;
    Slide2: TVsSlider;
    VsImage1: TVsImage;
    Slide3: TVsSlider;
    VsImage2: TVsImage;
    Slide4: TVsSlider;
    VsImage3: TVsImage;
    Slide5: TVsSlider;
    VsImage4: TVsImage;
    GainSlider: TVsSlider;
    VsImage5: TVsImage;
    EqOnCheck: TVsCheckBox;
    VsButton3: TVsButton;
    PrsetMenu: TPopupMenu;
    Load: TMenuItem;
    OpenDialog: TOpenDialog;
    Save: TMenuItem;
    SaveDialog: TSaveDialog;
    N1: TMenuItem;
    Reset: TMenuItem;
    EqGraph: TImage;
    procedure VsButton1Click(Sender: TObject);
    procedure VsButton2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure GainSliderChange(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure EqOnCheckClick(Sender: TObject);
    procedure VsButton3Click(Sender: TObject);
    procedure LoadClick(Sender: TObject);
    procedure SaveClick(Sender: TObject);
    procedure ResetClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormEQ: TFormEQ;

implementation

uses main;

{$R *.dfm}

procedure TFormEQ.VsButton1Click(Sender: TObject);
begin
 Application.Minimize;
end;

procedure TFormEQ.VsButton2Click(Sender: TObject);
begin
 Close;
 FormPlayer.EQCheck.Checked := False;
end;

procedure TFormEQ.FormCreate(Sender: TObject);
begin
 FormEQ.Height := mainSkin.Height;
 FormEQ.Width := mainSkin.Width;
 FormEq.GainSliderChange(Nil);
end;

procedure TFormEQ.GainSliderChange(Sender: TObject);
 var cnt : Integer; EqParam : TEqPreset;
begin
{Drawing preset}
 cnt := VsComposer.Graphics.IndexByName('eqmain.bmp');
 with EqGraph do begin
  Canvas.Pen.Color := clBlack;
   Canvas.CopyRect(Rect(0, 0, Width, Height), VsComposer.Graphics[cnt].Bitmap.Canvas, Rect(Left, Top, Left + Width, Top + Height));
   Canvas.MoveTo(0, Height div 2);
   Canvas.LineTo(15, Height div 2 - Slide1.Position);
   Canvas.LineTo(30, Height div 2 - Slide2.Position);
   Canvas.LineTo(45, Height div 2 - Slide3.Position);
   Canvas.LineTo(60, Height div 2 - Slide4.Position);
   Canvas.LineTo(72, Height div 2 - Slide5.Position);
    cnt := Trunc((GainSlider.Position * 30/100) - 15);
    Canvas.Pen.Color := clSilver;
    Canvas.MoveTo(0, Height div 2 + cnt);
    Canvas.LineTo (Width, Height div 2 + cnt);
    Application.ProcessMessages;
  end;

  {Eq Values Update}
   EqParam[0] := Slide1.Position;
   EqParam[1] := Slide1.Position;
   EqParam[2] := Slide2.Position;
   EqParam[3] := Slide3.Position;
   EqParam[4] := Slide3.Position;
   EqParam[5] := Slide4.Position;
   EqParam[6] := Slide4.Position;
   EqParam[7] := Slide5.Position;
   EqParam[8] := Slide5.Position;
   EqParam[9] := Slide5.Position;
     AudioObjectPlayer.UpdateEq(EqParam);
     AudioObjectPlayer.SetGainVolume(GainSlider.Position);
end;

procedure TFormEQ.FormActivate(Sender: TObject);
begin
  GainSliderChange(Nil);
end;

procedure TFormEQ.EqOnCheckClick(Sender: TObject);
begin
 if EqOnCheck.Checked then
   AudioObjectPlayer.SetEqualizer
 else
   AudioObjectPlayer.ResetEqualizer;
end;

procedure TFormEQ.VsButton3Click(Sender: TObject);
 var Point : TPoint;
begin
 GetCursorPos(Point);
 PrsetMenu.Popup(Point.X, Point.Y);
end;

procedure TFormEQ.LoadClick(Sender: TObject);
  var cnt : Integer; EqParam : TEqPreset;
      PrstIni : TINIFile;
begin
 OpenDialog.Title := 'Load preset';
 OpenDialog.Filter := 'Preser (*.eq)|*.eq';
 if not OpenDialog.Execute then Exit;
   PrstIni := TINIFile.Create (OpenDialog.FileName);
      Slide1.Position := PrstIni.ReadInteger('Preset', 'Slider1', 0);
      Slide2.Position := PrstIni.ReadInteger('Preset', 'Slider2', 0);
      Slide3.Position := PrstIni.ReadInteger('Preset', 'Slider3', 0);
      Slide4.Position := PrstIni.ReadInteger('Preset', 'Slider4', 0);
      Slide5.Position := PrstIni.ReadInteger('Preset', 'Slider5', 0);
     GainSliderChange(Nil);
   PrstIni.Free;
end;

procedure TFormEQ.SaveClick(Sender: TObject);
  var cnt : Integer; EqParam : TEqPreset;
      PrstIni : TINIFile;
begin
 SaveDialog.Title := 'Save preset';
 SaveDialog.Filter := 'Preser (*.eq)|*.eq';
 if not SaveDialog.Execute then Exit;
  if UpperCase(ExtractFilePath(SaveDialog.FileName)) <> '.EQ' then SaveDialog.FileName := SaveDialog.FileName + '.eq';
   PrstIni := TINIFile.Create (SaveDialog.FileName);
       PrstIni.WriteInteger('Preset', 'Slider1', Slide1.Position);
       PrstIni.WriteInteger('Preset', 'Slider2', Slide2.Position);
       PrstIni.WriteInteger('Preset', 'Slider3', Slide3.Position);
       PrstIni.WriteInteger('Preset', 'Slider4', Slide4.Position);
       PrstIni.WriteInteger('Preset', 'Slider5', Slide5.Position);
   PrstIni.Free;
end;

procedure TFormEQ.ResetClick(Sender: TObject);
begin
  Slide1.Position := 0;
  Slide2.Position := 0;
  Slide3.Position := 0;
  Slide4.Position := 0;
  Slide5.Position := 0;
  GainSlider.Position := 0;
  GainSliderChange(Nil);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -