![]() |
Screenshot von Panel als .bmp speichern?
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:
Meine Frage nun allerdings ist, wie ich den Screenshot von dem Panel nun speichern kann, da er so nur auf der Form ausgegeben wird??
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; mfg, Nico |
Re: Screenshot von Panel als .bmp speichern?
|
Re: Screenshot von Panel als .bmp speichern?
Dankeschön, werde es gleich ausprobieren^^
|
Re: Screenshot von Panel als .bmp speichern?
Hi zusammen,
ich hab mal eine kleine Prozedur geschrieben mit der die Aufgabe generell gelöst werden kann, also nicht nur für ein Panel, sondern für jede von TWinControl abgeleitete Klasse. Der Trick ist die Verwendung der Methode PaintTo(...).
Delphi-Quellcode:
Viele Grüße,procedure CreateScreenShot(AWinControl: TWinControl; AFileName: String); var B: TBitmap; begin B := TBitmap.Create; with AWinControl do begin B.Width := Width; B.Height := Height; PaintTo(B.Canvas, 0, 0); end; B.SaveToFile(AFileName); B.Free; end; Stephan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz