Einzelnen Beitrag anzeigen

Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#1

Zeichnen eines Plots beschleunigen (TImage)

  Alt 8. Dez 2007, 16:37
Hallo liebe Gemeinde,

ich möchte ein Array in einem Image plotten. Das ganze geschieht über ein TBitmap, welches nach dem Zeichnen auf das Image assigned wird (BitBlt). Dies verhindert im Vergleich zum direkten Zeichnen auf das Image das flackern und beschleunigt den Vorgang. Trotzdem ist es mir noch zu langsam.
Es wird nämlich sehr of (300 Mal, für jedes Arrayelement) gezeichnet, da ich eine flüssige Bewegung darstellen möchte.

Delphi-Quellcode:
procedure drawgraph(arr:tintarr;image:timage;bmp:tbitmap);
var
  i:integer;
  col:tcolor;
begin
  with bmp do
    begin
      Canvas.Brush.Color:=clbtnface;
      Canvas.Pen.Color:=clblack;
      Canvas.Rectangle(0,0,302,302);
      for i:=0 to 299 do
        begin
          if arr[i]=i then Col:=clgreen else Col:=clred; //Der Sinn hiervon sei mal dahingestellt...
          Canvas.Pixels[i+1,300-arr[i]]:=col;
        end;
    end;
  bitblt(image.Canvas.Handle,0,0,302,302,bmp.Canvas.Handle,0,0,srccopy);
  image.Refresh;
end;
Wie kann ich die Prozedur beschleunigen? Dabei möchte ich jedoch ungern auf TChart oder OGL zurückgreifen.

Grüße,
Frank.
Frank Dumont
  Mit Zitat antworten Zitat