Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unit1;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
- System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,
- FMX.Graphics;
- type
- TForm1 = class(TForm)
- timer: TTimer;
- procedure FormCreate(Sender: TObject);
- procedure FormPaint(Sender: TObject);
- procedure FormKeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- procedure timerTimer(Sender: TObject);
- private
- { Private declarations }
- windowHeight: Integer;
- waveAmplitude: Integer;
- waveSpeed: Integer;
- isWaveActive: Boolean;
- waveOffset: Integer;
- public
- { Public declarations }
- constructor Create(AOwner: TComponent); override;
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- constructor TForm1.Create(AOwner: TComponent);
- begin
- inherited Create(AOwner);
- DoubleBuffered := True;
- Color := clBlack;
- Font.Color := clWhite;
- windowHeight := 400;
- waveAmplitude := 50;
- waveSpeed := 5;
- isWaveActive := False;
- waveOffset := 0;
- timer := TTimer.Create(Self);
- timer.Interval := 30;
- timer.OnTimer := timerTimer;
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- KeyPreview := True;
- end;
- procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- begin
- if Key = VK_RETURN then
- begin
- isWaveActive := not isWaveActive;
- if isWaveActive then
- timer.Enabled := True
- else
- timer.Enabled := True;
- end;
- end;
- procedure TForm1.FormPaint(Sender: TObject);
- var
- y, waveX: Integer;
- leftColor, rightColor: TColor;
- i: Integer;
- begin
- for y := 0 to windowHeight do
- begin
- waveX := Trunc(waveAmplitude * Sin(2 * Pi * (y + waveOffset) /
- windowHeight));
- if isWaveActive then
- begin
- leftColor := clBlue;
- rightColor := clRed;
- end
- else
- begin
- leftColor := clRed;
- rightColor := clBlue;
- end;
- Canvas.Brush.Style := bsSolid; // Устанавливаем стиль заливки
- Canvas.Brush.Color := leftColor; // Устанавливаем цвет заливки
- Canvas.FillRect(Rect(0, y, waveX + ClientWidth div 2, y + 20));
- Canvas.Brush.Color := rightColor; // Устанавливаем другой цвет заливки
- Canvas.FillRect(Rect(waveX + ClientWidth div 2, y, ClientWidth, y + 20));
- end;
- end;
- procedure TForm1.timerTimer(Sender: TObject);
- begin
- waveOffset := waveOffset + waveSpeed;
- Invalidate;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement