Как быстро выводить графику?

Материал из DRKB


Как быстро выводить графику (a то Canvas очень медленно работает)

Вот пример заполнения формы точками случайного цвета:


type
  TRGB = record
    b, g, r: Byte;
  end;
  ARGB = array[0..1] of TRGB;
  PARGB = ^ARGB;

var
  b: TBitMap;

procedure TForm1.FormCreate(Sender: TObject);
begin
  b := TBitMap.Create;
  b.PixelFormat := pf24bit;
  b.Width := ClientWidth;
  b.Height := ClientHeight;
end;

procedure TForm1.Tim1OnTimer(Sender: TObject);
var
  p: PARGB;
  x, y: Integer;
begin
  for y := 0 to b.Height - 1 do
  begin
    p := b.Scanline[y];
    for x := 0 to b.Width - 1 do
    begin
      p[x].r := Random(256);
      p[x].g := Random(256);
      p[x].b := Random(256);
    end;
  end;
  Canvas.Draw(0, 0, b);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  b.Free;
end;


Source: http://delphiworld.narod.ru
ID: 03723