procedure TTriangleGradient.Paint;
var
vert: array of TRIVERTEX;
gt: array of TGradientTriangle;
i: integer;
begin
SetLength(vert, FTriangles.Count);
SetLength(gt, FVertex.Count);
for i:=0 to FTriangles.Count-1 do begin
vert[i].X:=FTriangles[i].X;
vert[i].Y:=FTriangles[i].Y;
vert[i].Red:=GetRValue(FTriangles[i].Color)*256;
vert[i].Green:=GetGValue(FTriangles[i].Color)*256;
vert[i].Blue:=GetBValue(FTriangles[i].Color)*256;
vert[i].Alpha:=0;
end;
for i:=0 to FVertex.Count-1 do begin
gt[i].Vertex1:=FVertex[i].Vertex1;
gt[i].Vertex2:=FVertex[i].Vertex2;
gt[i].Vertex3:=FVertex[i].Vertex3;
end;
GradientFill(Canvas.Handle, @vert[0], FTriangles.Count,
@gt[0], FVertex.Count, GRADIENT_FILL_TRIANGLE);
SetLength(vert, 0);
SetLength(gt, 0);
end;