Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: ScreenShot eines Fensters machen dessen Inhalt größer Formgröße ist

  Alt 17. Mär 2013, 13:48
Ich hatte doch noch einen Tresor im Garten vergraben, den musste ich nur noch ausbuddeln und aufschweißen...

Musst Du mal schauen, ob Dich das auf den Weg bringen kann:
- DesignerBoxTournament ist eine Scrollbox
- Designer ist ein Panel in der Scrollbox, das den Kontent enthält (und der Gesamtgröße entspricht)
- ImageCopy ist ein TImage


Delphi-Quellcode:
procedure TFormTurniere.sButtonCopyClick(Sender: TObject);
var
  DR, SR: TRect;
  X, Y: Integer;
begin
  Beep;
  ImageCopy.Picture.Bitmap.Width := DesignerBoxTournament.Designer.Width;
  ImageCopy.Picture.Bitmap.Height := DesignerBoxTournament.Designer.Height;
  DR.Left := 0;
  DR.Top := 0;
  DR.Right := ImageCopy.Picture.Bitmap.Width;
  DR.Bottom := ImageCopy.Picture.Bitmap.Height;
  ImageCopy.Canvas.FillRect(DR);
  Y := 0;
  while Y < DesignerBoxTournament.Designer.Height do
  begin
    X := 0;
    while X < DesignerBoxTournament.Designer.Width do
    begin
      DesignerBoxTournament.HorzScrollBar.Position := X;
      DesignerBoxTournament.VertScrollBar.Position := Y;
      //ShowDummy(DesignerBoxTournament); // ... baute den Inhalt auf
      Application.ProcessMessages;
      Sleep(500);
      DR.Left := X;
      DR.Top := Y;
      DR.Right := X + DesignerBoxTournament.ClientWidth;
      DR.Bottom := Y + DesignerBoxTournament.ClientHeight;
      SR.Left := X;
      SR.Top := Y;
      SR.Right := X + DesignerBoxTournament.ClientWidth;
      SR.Bottom := Y + DesignerBoxTournament.ClientHeight;
      ImageCopy.Canvas.CopyRect(DR, DesignerBoxTournament.Designer.Canvas, SR);
      Inc(X, DesignerBoxTournament.ClientWidth);
    end;
    Inc(Y, DesignerBoxTournament.ClientHeight);
  end;
  ImageCopy.Picture.Bitmap.SaveToFile(Path + 'Copy.bmp');
end;
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat