Einzelnen Beitrag anzeigen

Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#10

Re: Schnell wiederholt in PaintBox zeichnen (Bitblt)

  Alt 27. Okt 2009, 16:03
Auch hier wieder ein Offscreenbitmap basteln und in einem Timer etc. auf dieses Bitmap zeichnen lassen.
Das/die Bitmaps dann in der Paintbox zeichnen.

Spectrum ist eine PaintBox ?

Ich pers. verwende keine PaintBox, ist mir zu "dumm".


Beispiel:
Delphi-Quellcode:
implementation

{$R *.dfm}

const
  VisXOffset = 50;
  VisYOffset = 40;

procedure TForm1.FormCreate(Sender: TObject);
begin
  bmp := TBitmap.Create;
  bmp.Width := 200;
  bmp.Height := 80;
  bmp.Canvas.Brush.Color := clBlack;

  RenderVisDone := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if RenderVisDone and ASSIGNED(bmp) then
  begin
    RenderVis;
    bitblt(Canvas.Handle, VisXOffset, VisYOffset, bmp.Width, bmp.Height,
      bmp.Canvas.Handle, 0, 0, SRCCOPY);
  end;
end;

procedure TForm1.RenderVis;
var
  i: integer;
  gt: Cardinal;
begin
  RenderVisDone := False;
  bmp.Canvas.FillRect(bmp.Canvas.ClipRect);

  for i := 0 to bmp.Width div 4 - 1 do
  begin
    gt := GetTickCount;
    Windows.SetPixel(bmp.Canvas.Handle, i*4, round(bmp.Height div 2 + sin(gt/250+i)*15), RGB(255, 0, 0));
    Windows.SetPixel(bmp.Canvas.Handle, i*4, round(bmp.Height div 2 + sin(gt/500-i)*20), RGB(128, 128, 255));
  end;

  RenderVisDone := True;
end;

end.
Man kann sich das auch in eine Classe bauen bzw. formen.


//Edit: Delphicodehighlightdingenbumensfehlfunktionskorrek tur ..
Angehängte Dateien
Dateityp: zip demo_949.zip (204,8 KB, 30x aufgerufen)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat