Laden...

Form ausdrucken und Druckbereich anpassen.

Erstellt von Goofigoofi vor 2 Jahren Letzter Beitrag vor 2 Jahren 469 Views
G
Goofigoofi Themenstarter:in
25 Beiträge seit 2020
vor 2 Jahren
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.942 Beiträge seit 2008
vor 2 Jahren

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 2 Jahren

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