Ich hab ein Panel in einer Scrollbox, das Panel wächst und schrumpft zur Laufzeit.
Ich möchte das Panel als Bild ausdrucken können also dachte ich mir, ich packs erstmal in eine TBitnmap.
Code:
function TForm1.PanelToBmp(Panel:TPanel):TBitmap;
var
bmp:TBitmap;
DC:HDC;
begin
bmp:=TBitmap.Create();
bmp.Width:=Panel.Width;
bmp.Height:=Panel.Height;
DC:=GetDc(Panel.Handle);
BitBlt(bmp.canvas.handle,0,0,Panel.Width,Panel.Height,
DC,0,0,SRCCOPY);
ReleaseDC(Panel.handle,
DC);
result:=bmp;
end;
procedure TForm1.ButtonDruckenClick(Sender: TObject);
var
PBM:TBitmap;
begin
PBM:=PanelToBmp(Panel1);
try
Image1.Width:=Panel1.Width;
Image1.Height:=Panel1.Height;
Image1.Picture.Bitmap.Assign(PBM);
finally
FreeAndNil(PBM);
end;
end;
Das funktioniert gut solange das Panel noch auf den Bildschirm passt.
Wächst das Panel jetzt auf 3000px * 3000px an und man müsste scrollen um das Ende zu sehen, dann wird das Bitmap zwar in
der passenden Größe erstellt, aber man bekommt nur den Bildschirmbereich reinkopiert (also auch die Komponenten um das Panel herum), alles was über
den Bildschirm hinausgeht wird weiß dargestellt.
Weiß jemand was ich machen kann damit das ganze Panel kopiert wird?
Muss ich Schritt für Schritt das Panel Scrollen und die Bitmaps zusammenflicken?
Canvas.CopyRect hab ich auch versucht, liefert dasselbe Ergebnis.