Hallo,
das Problem ist das Folgende:
Ich möchte ein Windows-Forms-Fenster, was im Inhalt über den Bildschirmrand hinausgeht, drucken.
Hier ist das Problem, dass vom Fenster nur der sichtbare Bereich erfasst wird. D.h. alles was außerhalb des Bildschirmrandes liegt, wird nicht mit im "Screenshot" erfasst und bleibt leer.
So gehe ich dabei vor:
- Screenshot vom zu druckenden Form erstellen
- Screenshot drucken
Das Drucken läuft problemlos, das Erfassen des Bildes aber nicht.
Folgenden Code verwende ich um den Inhalt vom Form zu erfassen:
* Das BitBlt ist eine Methode auf der gdi32.dll
Dann lasse ich mir das Bild speichern, also über
dann sehe ich, das alles was unterhalb des maximal darzustellenden Bereiches liegt, schwarz ist.
Warum oder eher WIE kann ich den Bereich außerhalb des Bildschirms mit erfassen?
Das BitBlt vom
Gruß,
Newb
das Problem ist das Folgende:
Ich möchte ein Windows-Forms-Fenster, was im Inhalt über den Bildschirmrand hinausgeht, drucken.
Hier ist das Problem, dass vom Fenster nur der sichtbare Bereich erfasst wird. D.h. alles was außerhalb des Bildschirmrandes liegt, wird nicht mit im "Screenshot" erfasst und bleibt leer.
So gehe ich dabei vor:
- Screenshot vom zu druckenden Form erstellen
- Screenshot drucken
Das Drucken läuft problemlos, das Erfassen des Bildes aber nicht.
Folgenden Code verwende ich um den Inhalt vom Form zu erfassen:
Code:
Graphics g1 = this.CreateGraphics();
Image MyImage = new Bitmap(this.Controls[0].Width, this.Controls[0].Height, g1);
Graphics g2 = Graphics.FromImage(MyImage);
IntPtr dc1 = g1.GetHdc();
IntPtr dc2 = g2.GetHdc();
BitBlt(dc2, 0, 0, this.Controls[0].Width, this.Controls[0].Height, dc1, 0, 0, 13369376);
Dann lasse ich mir das Bild speichern, also über
Code:
MyImage.Save(....)
Warum oder eher WIE kann ich den Bereich außerhalb des Bildschirms mit erfassen?
Das BitBlt vom
Gruß,
Newb