Moin,
u d zwar habe ich jetzt schon herausgefunden, wie ich einen Screenshot von einem Panel
machen kann und zwar:
ScreenShot eines Fensters erstellen:
Hier eine Abwandlung der oberen Funktion. Hier wird das Ergebnis nicht gespeichet, sondern in eine Bitmap geladen:
Benötigt werden zwei Parameter:
Bitmap als Behälter
Handle des Fenster
Delphi-Quelltext markieren
// *** Erstellt von einem Formular ein ScreenShot ***
Delphi-Quellcode:
function FormularScreenShot(Bmp: TBitmap; h : hWnd): Boolean;
var
Rec: TRect;
iWidth, iHeight: Integer;
begin
with Bmp do try
GetWindowRect(h, Rec);
iWidth := Rec.Right - Rec.Left;
iHeight := Rec.Bottom - Rec.Top;
Width := iWidth;
Height := iHeight;
BitBlt(Canvas.Handle, 0, 0, iWidth, iHeight, GetWindowDC(h), 0, 0, SRCCOPY);
Result := True;
finally
ReleaseDC(h, GetWindowDC(h));
end;
end;
Beispiel:
ScreenShot eines Panels erstellen und auf den Formular zeichnen:
Delphi-Quelltext markieren
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
try
FormularScreenShot(Bmp, Panel1.Handle);
Canvas.Draw(20, 20, Bmp);
finally
Bmp.Free;
end;
end;
Meine Frage nun allerdings ist, wie ich den Screenshot von dem Panel nun speichern kann, da er so nur auf der Form ausgegeben wird??
mfg, Nico