Einzelnen Beitrag anzeigen

MrMyagi

Registriert seit: 2. Mai 2007
203 Beiträge
 
Delphi 7 Personal
 
#1

Screenshot von Panel als .bmp speichern?

  Alt 27. Mai 2008, 16:37
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
  Mit Zitat antworten Zitat