Grafik

Tipps rund um die Grafikprogrammierung

 

Den aktuellen Bildschirm als Bitmap speichern (Screenshot)

Um den aktuelle Bildschirm als Screenshot zu speichern kann man die Klasse TBitMap verwenden. Nachdem man sich das Handle auf die aktuelle Bildschrirmgrafik geholt hat lässt sich diese Grafik einfach in ein TBitMap-Objekt kopieren:

 1 function TForm1.CreateScreenBitMap: TBitmap;
 2 var
 3   Desktop          : HDC; // hält das Handle auf die Grafik des aktuellen Bildschirmes
 4 begin
 5   // Bitmap Objekt anlegen
 6   Result := TBitmap.Create;
 7   // Handle der Bildschirmgrafik ermitteln
 8   Desktop := GetDC(0);
 9   try
10     try
11       // wir wollen die volle Farbtiefe haben
12       Result.PixelFormat := pf32bit;
13       // Grösse der Ergebnisbitmap setzen
14       Result.Width := Screen.Width;
15       Result.Height := Screen.Height;
16       // Bildschirmgrafik in den Canvas der Ergebnisbitmap kopieren
17       BitBlt(Result.Canvas.Handle, 0, 0, Result.Width, Result.Height, Desktop, 0, 0, SRCCOPY);
18       Result.Modified := true;
19     finally
20       // Handle wieder freigeben
21       ReleaseDC(0, Desktop);
22     end;
23   except
24     Result.Free;
25     Result := nil;
26   end;
27 end;

Es ist darauf zu achten, dass diese Funktion ein TBitMap-Onjekt erzeugt und als Funktionsresultat zurückgibt. Der Aufrufer der Funktion ist für die Freigabe der zurückgegebenen Instanz verantwortlich!

Den aktuellen Bildschirm als BMP-Datei speichern

Um den aktuellen Bildschirm als Bitmap-Datei zu speichern kann man folgenden Code verwenden:

 1 procedure TForm1.SaveScreenAsBitMap(const aFileName: string);
 2 var
 3   bmp                                   : TBitmap;
 4 begin
 5   bmp := CreateScreenBitMap;  // aus dem vorigen Tipp
 6   try
 7     bmp.SaveToFile(aFileName);
 8   finally
 9     bmp.Free;
10   end;
11 end;
12

 

 

aktualisiert: 11.11.2009