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;