procedure TForm1.Button1Click(Sender: TObject); var Offset, Value, Index: Cardinal;
begin
Offset := 0;
Value := 255;
for Index := 0 to 255 * 3 do
begin
Canvas.Pen.Color := Value;
Canvas.MoveTo(Index, 0);
Canvas.LineTo(Index + 16, 32);
Dec(PByte(Cardinal(@Value) + (Offset mod 3))^);
Inc(PByte(Cardinal(@Value) + ((Offset + 1) mod 3))^);
if ((Index + 1) mod 255) = 0 then
Inc(Offset);
end;
end;