![]() |
Panel zu Bitmap konvertieren funktioniert nur im sichtbaren Bereich
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. |
AW: Panel zu Bitmap konvertieren funktioniert nur im sichtbaren Bereich
Tja, das ist halt so, es wird alles (Windows und ihr DC) auf die Größe des Desktops begrenzt, was sich irgendwie auf dem Desktop befindet.
|
AW: Panel zu Bitmap konvertieren funktioniert nur im sichtbaren Bereich
Die Panel.PaintTo(Canvas,X,Y) Methode ist das was ich gebraucht habe.
Den Ziel-Canvas sollte man vorher in Höhe und Breite anpassen und danach Canvas.Lock() aufrufen. nach der PaintTo()-Methode, wieder Canvas.Unlock() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz