Einzelnen Beitrag anzeigen

StefanG

Registriert seit: 23. Feb 2006
74 Beiträge
 
#19

Re: Fernsehrauschen zeichnen?

  Alt 23. Mai 2006, 15:40
Ok ich habs mal probiert so testweise.

Wenn ich folgendes mache (ohne Threads) :

Delphi-Quellcode:
procedure TForm1.Snow(image: Timage);
var
  i,j,r:integer;
begin
   For i := 1 to Image.Width do
     For j := 1 to Image.height do begin
         r := random(256);
         Image.Canvas.Pixels[i,j] := RGB(r,r,r);
         application.ProcessMessages;
     end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  Snow(Image);
end;
Ich starte das Programm, und wenn die Form erscheint, dann ist bereits das fertig gezeichnete Bild zu sehen.
Wenn ich jetzt aber ein Thread-Object erstelle :

Delphi-Quellcode:
constructor Tsnow.Create(image: TImage);
begin
  FImage := image;
  inherited Create(False);
end;

procedure Tsnow.Execute;
begin
  Snow(FImage);
end;

procedure Tsnow.SetPixels;
var
  r : Integer;
begin
  r := Random(256);
  FImage.Canvas.Pixels[FX,FY] := RGB(r,r,r)
end;

procedure Tsnow.Snow(image: Timage);
var
  i,j:integer;
begin
   For i := 1 to FImage.Width do
     For j := 1 to FImage.height do begin
         FX := i;
         FY := j;
         Synchronize(SetPixels);
         application.ProcessMessages
     end;
end;
und dieses dann erzeuge mit :

tsnow.Create(Image); dann kann ich schön zugucken, wie Linie für Linie gezeichnet wird und es dauert etwa 20 Sekunden bis das Image gefüllt ist....
Mache ich was falsch?
  Mit Zitat antworten Zitat