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