Wie wär's damit:
Delphi-Quellcode:
procedure TForm1.AppFormKopieren;
Var
Bitmap: TBitmap;
Canvas: TCanvas;
begin
Canvas := TCanvas.Create;
Try
Canvas.Handle := GetWindowDC(0);
Try
Bitmap := TBitmap.Create;
Bitmap.Width := Self.Width;
Bitmap.Height := Self.Height;
Bitmap.PixelFormat := pfDevice;
BitBlt(Bitmap.Canvas.Handle, 0, 0, Self.Width, Self.Height, Canvas.Handle, Self.Left, Self.Top, Bitmap.Canvas.CopyMode);
Img_Kopie.Picture.Bitmap.Assign(BitMap);
Finally
BitMap.Free;
End;
Finally
ReleaseDC(0, Canvas.Handle);
Canvas.Free;
End;
end;
Img_Kopie ist ein TImage, das zum Testen auf der Form liegt ... Du kannst auch gleich den Dateinamen mitgeben und das Bitmap abspeichern. Und für einzelne Komponenten machst du das dann ebenso, natürlich mit entsprechender Umrechnung der Koordinaten, die sich bei Komponenten ja auf das jeweilige Parent beziehen.
Quelle