Mawilo hat geschrieben:Ich habe aber die gewünschte Grafik schon vorher erstellt. Kann ich diese an die Druckklasse übergeben oder muss ich das ganze noch einmal erstellen lassen? Ich müsste also den device context irgendwie weiterreichen?
Hallo Mawilo!
Ich habe mir jetzt deinen Code nicht angesehen. Aber hier die Möglichkeiten:
Wenn etwas auf dem Bildschirm **sichtbar** ist, dann kannst du von diesem Bereich mit ``wx.DC.Blit()`` den sichtbaren Bereich vom DC kopieren. Das ist aber nicht zuverlässig und bei Fenstern mit Scrollbars nicht zielführend.
Die andere Variante ist die, dass du immer zuerst alles in ein Bitmap zeichnest. Dieses Bitmap lässt du dann mit ``wx.BufferedPaintDC()`` im Paint-Eventhandler auf den Bildschirm zeichnen und du kannst dieses Bitmap auch zum Drucken auslesen. -- Einfach das Bitmap an einen ``wx.MemoryDC()`` hängen und mit ``wx.DC.Blit()`` vom MemoryDC in den DC des ``wx.Printout``-Objekts kopieren.
EDIT BEGIN
Mit ``wx.DC.DrawBitmap`` sparst du dir das Anhängen des Bitmaps an den MemoryDC.
EDIT END
Damit wird aber jede jede Seite als Bitmap **zusätzlich** im Speicher gehalten. Das könnte bei vielen Seiten am Speicher zehren. Also entweder du lagerst die Bitmaps auf die Festplatte aus oder du merkst dir, wie die Seiten erzeugt wurden und erzeugst diese zum Drucken noch einmal neu. Das ist der Idealfall.
mfg
Gerold
