Einzelnen Beitrag anzeigen

RobertS
(Gast)

n/a Beiträge
 
#1

Performance | Screenshots

  Alt 1. Mär 2004, 18:11
Hallo Delphigemeinde.


ich habe ein tool geschrieben was alle 2000ms über ein Timer gesteuert Screenshots
von dem kompletten desktop macht und diese in eine Datei speichert. (diese wird immer wieder durch einen neuen Screenshot ersetzt)

Nun meine Frage:

Ist da performance mäßig noch was rauszuholen, denn es ruckelt schon alles wenn ein Screenshot gemacht wird.
Hier die Funktion (ähnlich CL)


Delphi-Quellcode:
procedure TMain.ScreenToFile(aFileName: string);
var
  Bitmap: TBitmap;
  JPG : TJPEGImage;
  Canvas: TCanvas;
begin
  Canvas := TCanvas.Create;
  try
    Canvas.Handle := GetWindowDC(0);
    Application.ProcessMessages;
    try
      Bitmap := TBitmap.Create;
      Application.ProcessMessages;
      JPG := TJPEGImage.Create;
      Bitmap.PixelFormat:=pf8bit;
       Application.ProcessMessages;
      try
        Bitmap.Width := Screen.DesktopWidth;
        Bitmap.Height:= Screen.DesktopHeight;
        Bitmap.PixelFormat := pfDevice;
         Application.ProcessMessages;
        BitBlt(Bitmap.Canvas.Handle, 0, 0, Pred(Screen.DesktopWidth), Pred(
        Screen.DesktopHeight), Canvas.Handle, Screen.DesktopLeft,
        Screen.DesktopTop, Bitmap.Canvas.CopyMode);
        Application.ProcessMessages;
        JPG.CompressionQuality:=50;
        JPG.Assign(Bitmap);
        Application.ProcessMessages;
        if fileexists(aFileName) then
          deletefile(aFileName);
        JPG.SaveToFile(aFileName);
      finally
       // resizepictur(aFileName,800,600);
        Bitmap.Free;
        JPG.Free;
      end;
    finally
      ReleaseDC(0, Canvas.Handle);
      Application.ProcessMessages;
    end;
  finally
    Canvas.Free;
  end;
end;
ob diese vielen Application.ProcessMessages; was bringen kA

wäre für jeden Tipp dankbar.

mfg

[edit=sakura] [code] mit [delphi] ausgetauscht. Mfg, sakura[/edit]
  Mit Zitat antworten Zitat