95 lines
1.7 KiB
ObjectPascal
95 lines
1.7 KiB
ObjectPascal
unit QClipLineDemoMain;
|
|
|
|
{$I jcl.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils, Types, Classes,
|
|
{$IFDEF MSWINDOWS}
|
|
Windows,
|
|
{$ENDIF}
|
|
{$IFDEF VisualCLX}
|
|
Qt, QGraphics, QControls, QForms, QStdCtrls, QExtCtrls, QTypes, JclQGraphUtils,
|
|
{$ENDIF VisualCLX}
|
|
{$IFDEF VCL}
|
|
Graphics, ExtCtrls, Forms, JclGraphUtils,
|
|
{$ENDIF VCL}
|
|
JclBase;
|
|
|
|
type
|
|
TForm1 = class(TForm)
|
|
Timer1: TTimer;
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormPaint(Sender: TObject);
|
|
procedure Timer1Timer(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
R: TRect;
|
|
P: TPointArray;
|
|
FPenColor: TColor;
|
|
FPenColorLight: TColor;
|
|
procedure InitLines;
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
{$IFDEF VisualCLX}
|
|
{$R *.xfm}
|
|
{$ELSE}
|
|
{$R *.dfm}
|
|
{$ENDIF}
|
|
|
|
procedure TForm1.FormCreate(Sender: TObject);
|
|
begin
|
|
Randomize;
|
|
R.Left := 100;
|
|
R.Top := 100;
|
|
R.Right := 300;
|
|
R.Bottom := 300;
|
|
SetLength(P, 50);
|
|
InitLines;
|
|
end;
|
|
|
|
procedure TForm1.FormPaint(Sender: TObject);
|
|
begin
|
|
Canvas.Brush.Color := clWhite;
|
|
Canvas.FillRect(R);
|
|
Canvas.Pen.Color := FPenColorLight;
|
|
Canvas.PolyLine(P);
|
|
Canvas.Pen.Color := FPenColor;
|
|
DrawPolyLine(Canvas, P, R);
|
|
end;
|
|
|
|
procedure TForm1.InitLines;
|
|
var
|
|
i: Integer;
|
|
H, S, L: Single;
|
|
begin
|
|
for i := 0 to Length(P)-1 do
|
|
begin
|
|
P[i].X := Random(Width);
|
|
P[i].Y := Random(Height);
|
|
end;
|
|
H := Random;
|
|
S := Random;
|
|
L := 0.4 * Random;
|
|
|
|
FPenColor := WinColor(HSLToRGB(H, S, L));
|
|
FPenColorLight := WinColor(HSLToRGB(H, S, 1 - 0.2 * (1 - L)));
|
|
end;
|
|
|
|
procedure TForm1.Timer1Timer(Sender: TObject);
|
|
begin
|
|
InitLines;
|
|
Refresh;
|
|
end;
|
|
|
|
end.
|
|
|