Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#1

ScreenShot in Datei speichern

  Alt 31. Jan 2003, 12:59
Anbei eine Funktion, welche den gesamten Bildschirm, auch bei Mehr-Monitorsystemen in eine BMP-Datei speichert. Einfach der Funktion den Dateinamen als Paramter übergeben und fertig!

Im Vergleich zu meinem alten Library-Eintrag dürfte diese Funktion etwas schneller sein, man lernt ja nie aus

Delphi-Quellcode:
procedure ScreenToFile(aFileName: string);
var
  Bitmap: TBitmap;
  Canvas: TCanvas;
begin
  Canvas := TCanvas.Create;
  try
    Canvas.Handle := GetWindowDC(0);
    try
      Bitmap := TBitmap.Create;
      try
        Bitmap.Width := Screen.DesktopWidth;
        Bitmap.Height:= Screen.DesktopHeight;
        Bitmap.PixelFormat := pfDevice;
(*
        Bitmap.Canvas.CopyRect(Screen.DesktopRect, Canvas, Screen.DesktopRect);

  Anstatt der folgenden Zeile, kann auch die CopyRect Funktion genutzt werden.
  Die CopyRect-Funktion nutzt zusätzlich ein paar Schutzmechanismen, welche für
  ScreenShots nicht notwendig sind. Ausserdem greift die CopyRect-Funktion auf
  StretchBlt-Funktion zurück, welche langsamer als BitBlt ist.
*)

        BitBlt(Bitmap.Canvas.Handle, 0, 0, Pred(Screen.DesktopWidth), Pred(
            Screen.DesktopHeight), Canvas.Handle, Screen.DesktopLeft,
            Screen.DesktopTop, Bitmap.Canvas.CopyMode);
        Bitmap.SaveToFile(aFileName);
      finally
        Bitmap.Free;
      end;
    finally
      ReleaseDC(0, Canvas.Handle);
    end;
  finally
    Canvas.Free;
  end;
end;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat