AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Screenshot vom Clientbereich der Mainform machen
Thema durchsuchen
Ansicht
Themen-Optionen

Screenshot vom Clientbereich der Mainform machen

Ein Thema von Helmi · begonnen am 1. Apr 2012 · letzter Beitrag vom 2. Apr 2012
 
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.344 Beiträge
 
Delphi XE2 Professional
 
#1

Screenshot vom Clientbereich der Mainform machen

  Alt 1. Apr 2012, 15:06
Hallo,

ich nutze folgenden Code um von meiner MainForm einen ScreenShot zu erstellen:

Delphi-Quellcode:
procedure ScreenShot_erstellen(Pfad: String);
var
  Bitmap : TBitmap;
  Canvas : TCanvas;
  WindowRect: TRect;
  BitmapRect: TRect;

begin
  //Bitmap erzeugen
  Bitmap := TBitmap.Create;

  //Canvas erzeugen
  Canvas := TCanvas.Create;

  //Handle für Canvas angeben
  Canvas.Handle := GetWindowDC(GetDesktopWindow);

  //Rect von MainForm holen
  GetWindowRect(Application.MainForm.Handle, WindowRect);

  try
    BitmapRect := Rect(0, 0, WindowRect.Right - WindowRect.Left, WindowRect.Bottom - WindowRect.Top);

    //Bitmap-Größe angeben
    Bitmap.Width := WindowRect.Right - WindowRect.Left;
    Bitmap.Height := WindowRect.Bottom - WindowRect.Top;

    Bitmap.Canvas.CopyRect(BitmapRect, Canvas, WindowRect);

    //nur für den Thread - eigentlich steht zum Speichern noch etwas mehr Code dahinter
    Bitmap.SaveToFile(Pfad + 'Bild.jpg');
  finally
    //Bitmap löschen und freigeben
    FreeAndNil(Bitmap);

    //Canvas löschen und freigeben
    ReleaseDC(0, Canvas.Handle);
    FreeAndNil(Canvas);
  end;
end;
Nur würde ich gerne nur einen ScreenShot vom Client-Bereich zu machen. Also alles innerhalb der Ränder/Taskleiste.

Ich vermute ich muss die Nullen bei:
    BitmapRect := Rect(0, 0, WindowRect.Right - WindowRect.Left, WindowRect.Bottom - WindowRect.Top); durch Startwerte ersetzen, die innerhalb des Fensters sind.
Nur weiss ich nicht wie ich an "ClientLeft" und "ClientTop" komme.
(Es gibt ja nur ClientWidth und ClientHeight)

Oder gibt es den Clientbereich als Rect?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 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