Program TriangleDemo;

uses WinTypes, WinProcs, WObjects;

type
 PPolyWindow = ^TPolyWindow;
TPolyWindow = object(TWindow)
  procedure Paint(PaintDC: HDC;
     var PaintInfo: TPaintStruct);virtual;
 end;

TPolyApplication = object(TApplication)
  procedure InitMainWindow;virtual;
end;

procedure TPolyWindow.Paint;
type
 TTriangle = array [1..3] of TPoint;
var
 Bounds : TRect;
 HatchBrush : HBrush;
 Tri : TTriangle;
 C : Integer;
begin
 RandSeed := 11111;
GetClientWindow(HWindow, Bounds);

for C := 1 to 100 do
 begin
  HatchBrush := CreateHatchBrush(Random(6),RGB(Random(256), Random(256),
Random(256)));
  SelectObject(PaintDC,HatchBrush);
  Tri[1].X := Random(Bounds.Right);
  Tri[1].Y := Random(Bounds.Bottom);
  Tri[2].X := Random(Bounds.Right);
  Tri[2].Y := Random(Bounds.Bottom);
  Tri[3].X := Random(Bounds.Right);
  Tri[3].Y := Random(Bounds.Bottom);
  Polygon(PaintDC, Tri, 3);
  DeleteObject(HatchBrush);
  end;
end;

procedure TPolyApplication.InitMainWindow;
begin
 MainWindow := New(PPolyWindow, Init(nil, 'Polygons'));
end;

var
 PolyApp: TPolyApplication;

begin
 PolyApp.Init('Polygons');
 PolyApp.Run;
 PolyApp.Done;
end.
