Laden...

Form ausdrucken und Druckbereich anpassen.

Erstellt von Goofigoofi vor einem Jahr Letzter Beitrag vor einem Jahr 460 Views
G
Goofigoofi Themenstarter:in
25 Beiträge seit 2020
vor einem Jahr
Form ausdrucken und Druckbereich anpassen.

Hallo zusammen,

ich habe in einer Form einpanel das sich nach unten scrollen lässet. Nun möchte ich die Form ausdrucken.
Natürlich kann ich mit CaptureScreen nur den sichtbaren Inhalt der Form erfassen.
Hat jemand eine Idee wie man das anders machen könnte?

Hier mein Code bis jetzt.


private void button6_Click(object sender, EventArgs e)
        {
            CaptureScreen();
            printDocument1.Print();
        }
        private Bitmap _memoryImage;
        private void CaptureScreen()
        {
            using (var myGraphics = CreateGraphics())
            {
                var s = Size;
                _memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
                using (var memoryGraphics = Graphics.FromImage(_memoryImage))
                {
                    memoryGraphics.CopyFromScreen(Location.X, Location.Y, 0, 0, s);
                }
            }
        }

        private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
        {
            var wScale = e.MarginBounds.Width / (float)_memoryImage.Width;
            var hScale = e.MarginBounds.Height / (float)_memoryImage.Height;
            var scale = wScale < hScale ? wScale : hScale;

            e.Graphics.ScaleTransform(0.82f, 0.82f);
            e.Graphics.DrawImage(_memoryImage, 0, 0);
        }

Grüße Goofigoofi

4.931 Beiträge seit 2008
vor einem Jahr

Zeichnest du den Inhalt des Panel selbst (mittels des Paint-Ereignisses) oder befinden sich weitere Steuerelemente auf dem Panel?
Für ersteres erzeuge dir eine Methode, welche ein Image (bzw. Bitmap) erzeugt und dadrin zeichnet (und in der Paint-Methode auch einfach das erzeugte Image zeichnet). So kannst du dann dieses Image ausdrucken (müßtest aber noch überprüfen, wie das dann mit der Papiergröße bzw. Aufteilung auf mehrere Seiten aussieht).
Mittels Graphics.FromImage erhält man ein Graphics-Objekt, mit dem man analog zum Paint-Ereignis zeichnen kann.

Wenn du aber die ganze Form (inkl. kompletten Panel-Inhalt) ausdrucken willst, wie stellst du dir das vor (dann müßte ja die Form gestretcht werden, je nachdem wo das Panel auf der Form platziert ist)?

G
Goofigoofi Themenstarter:in
25 Beiträge seit 2020
vor einem Jahr

Nein es befinden sich noch viele weitere Steuerelemente auf dem Panel.
kannman nicht irgendwie den Bereich vorgeben der gedruck werden soll?