Hallo,
mittels dem nachfolgenden Code mach ich Screenshots von einer Form (MainForm):
Delphi-Quellcode:
procedure ScreenShot_erstellen(const Pfad: String);
function DateiName(Pfad, Name, Endung: String): String;
var
i: Integer;
begin
//Variablen vordefinieren
Result := '';
i := 1;
//Pfad mit einem Backslash enden lassen
Pfad := IncludeTrailingPathDelimiter(Pfad);
while true do
begin
//Dateinamen zusammenstellen
Result := Pfad + Format('%s%.3d.%s', [Name, i, Endung]);
//wenn Datei nicht vorhanden, dann Schleife beenden
If not FileExists(Result) then
break;
inc(i);
end;
end;
var
Png : TPngImage;
Bitmap : TBitmap;
BitmapRect: TRect;
i_Width : Integer;
i_Height : Integer;
begin
//Bitmap erzeugen
Bitmap := TBitmap.Create;
//PNG erzeugen
Png := TPngImage.Create;
//Höhe und Breite des Client-Bereiches ermitteln
i_Width := Application.MainForm.ClientWidth;
i_Height := Application.MainForm.ClientHeight;
try
//prüfen ob der ScreenShot-Ordner besteht, wenn nicht, dann erstellen
//wenn er nicht erstellt werden konnte, dann Log schreiben
If not DirectoryExists(Pfad) then
If not CreateDir(Pfad) then
begin
InfoLog(Format('ScreenShot: Pfad "%s" nicht vorhanden und konnte nicht erstellt werden!', [Pfad]));
exit;
end;
//Rect des Clientbereiches definieren
BitmapRect := Rect(0, 0, i_Width, i_Height);
//Bitmap-Größe angeben
Bitmap.Width := i_Width;
Bitmap.Height := i_Height;
//Bild-Bereich in Bitmap kopieren
Bitmap.Canvas.CopyRect(BitmapRect, Application.MainForm.Canvas, BitmapRect);
//Bitmap als PNG speichern
Png.Assign(Bitmap);
Png.CompressionLevel := 7;
Png.SaveToFile(DateiName(Pfad, 'Bild', 'png'));
finally
//Bitmap löschen und freigeben
FreeAndNil(Bitmap);
//PNG löschen und freigeben
FreeAndNil(Png);
end;
end;
funktioniert tadellos
Nur über die MainForm setz ich noch eine 2. Form.
Jetzt hätt ich gerne einen Screenshot von allem - also so wie ich es auf dem Bildschirm sehe
die MainForm im Hintergrund und die andere Form darüber
wie kann ich das am besten realisieren?
mfg
Helmi
>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<