Blame lazarus/live-ink/unit1.pas
|
|
36ad6f |
unit Unit1;
|
|
|
36ad6f |
|
|
|
36ad6f |
{$mode objfpc}{$H+}
|
|
|
36ad6f |
|
|
|
36ad6f |
interface
|
|
|
36ad6f |
|
|
|
36ad6f |
uses
|
|
|
36ad6f |
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;
|
|
|
36ad6f |
|
|
|
36ad6f |
type
|
|
|
36ad6f |
|
|
|
36ad6f |
{ TForm1 }
|
|
|
36ad6f |
|
|
|
36ad6f |
TForm1 = class(TForm)
|
|
|
36ad6f |
Timer1: TTimer;
|
|
|
36ad6f |
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
|
|
36ad6f |
procedure FormPaint(Sender: TObject);
|
|
|
36ad6f |
procedure Timer1Timer(Sender: TObject);
|
|
|
36ad6f |
private
|
|
|
36ad6f |
{ private declarations }
|
|
|
36ad6f |
public
|
|
|
36ad6f |
{ public declarations }
|
|
|
36ad6f |
end;
|
|
|
36ad6f |
|
|
|
36ad6f |
const
|
|
|
36ad6f |
maxLen = 50;
|
|
|
36ad6f |
|
|
|
36ad6f |
var
|
|
|
36ad6f |
Form1: TForm1;
|
|
|
36ad6f |
pos: integer = 0;
|
|
|
36ad6f |
len: integer = 0;
|
|
|
36ad6f |
px: array[0..maxLen] of integer;
|
|
|
36ad6f |
py: array[0..maxLen] of integer;
|
|
|
36ad6f |
|
|
|
36ad6f |
implementation
|
|
|
36ad6f |
|
|
|
36ad6f |
{$R *.lfm}
|
|
|
36ad6f |
|
|
|
36ad6f |
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
|
|
|
36ad6f |
Y: Integer);
|
|
|
36ad6f |
begin
|
|
|
36ad6f |
pos := pos + 1;
|
|
|
36ad6f |
len := len + 1;
|
|
|
36ad6f |
if pos >= maxLen then pos := 0;
|
|
|
36ad6f |
if len > maxLen then len := maxLen;
|
|
|
36ad6f |
|
|
|
36ad6f |
px[pos] := x;
|
|
|
36ad6f |
py[pos] := y;
|
|
|
36ad6f |
end;
|
|
|
36ad6f |
|
|
|
36ad6f |
procedure TForm1.Timer1Timer(Sender: TObject);
|
|
|
36ad6f |
begin
|
|
|
36ad6f |
Refresh;
|
|
|
36ad6f |
len := len - 1;
|
|
|
36ad6f |
if len < 0 then len := 0;
|
|
|
36ad6f |
end;
|
|
|
36ad6f |
|
|
|
36ad6f |
procedure TForm1.FormPaint(Sender: TObject);
|
|
|
36ad6f |
var
|
|
|
36ad6f |
i, p: Integer;
|
|
|
36ad6f |
begin
|
|
|
36ad6f |
Canvas.MoveTo(px[pos], py[pos]);
|
|
|
36ad6f |
for i := 0 to len-1 do begin
|
|
|
36ad6f |
p := (maxLen + pos - i) mod maxLen;
|
|
|
36ad6f |
Canvas.Pen.Width := len - i;
|
|
|
36ad6f |
Canvas.LineTo(px[p], py[p]);
|
|
|
36ad6f |
end;
|
|
|
36ad6f |
end;
|
|
|
36ad6f |
|
|
|
36ad6f |
end.
|
|
|
36ad6f |
|