Druckerdialog / Ausdruck zu groß

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Druckerdialog / Ausdruck zu groß

    Moin Moin zusammen,

    ich hab mir ne kleine Bildersammlung zusammengestellt in VB.net.
    Inhalt ist eine ListBox wo alle Bilder aus Dir und SubDir zusammengesucht werden, mit einem Klick auf das jeweilige wird es nebendran in einer PictureBox1 dargestellt.
    Nun meine Frage,...
    Ich habe einen "PrintDialog1" und ein "PrintDocument1" eingebaut,...
    Dieser soll das Bild drucken, was er bis dahin auch tut,... Jedoch zu groß.
    Das Papierformat ist A4, das "Quellbild" hat 1920*1080 Px und auf dem Drucker kommt nur ca. 1/3 des gesamten Bildes raus...

    Hier mal mein Quellcode...

    VB.NET-Quellcode

    1. Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    2. Dim gr As Graphics = e.Graphics
    3. ' Verweis auf das Bild festlegen
    4. Dim oImage As Image = PictureBox1.Image
    5. ' Rechteck für den Ausdruck festlegen
    6. ' Position + Originalgröße
    7. Dim p As New Point(e.MarginBounds.Left, e.MarginBounds.Top)
    8. Dim r As New Rectangle(p.X, p.Y, oImage.Width, oImage.Height)
    9. ' Bild drucken im angegebenen Rechteck drucken
    10. gr.DrawImage(oImage, r)
    11. gr.Dispose()
    12. End Sub
    13. Private Sub DruckenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DruckenToolStripMenuItem.Click
    14. With PrintDocument1
    15. ' Dokument-Title
    16. .DocumentName = "Print Picture"
    17. ' Ausdruck starten
    18. If PrintDialog1.ShowDialog = DialogResult.OK Then
    19. PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
    20. PrintDocument1.Print()
    21. End If
    22. End With
    23. End Sub


    Jemand eine Idee wie ich das auf A4 Größe proportional verkleinern kann, wenn das Bild zu groß ist?
    Danke schon mal und Grüße,

    samson

    Korrektur, das es nicht falsch verstanden wird :)
    Ich bin mir ziehmlich sicher das es hier gemacht werden muss...

    VB.NET-Quellcode

    1. Dim p As New Point(e.MarginBounds.Left, e.MarginBounds.Top)
    2. Dim r As New Rectangle(p.X, p.Y, oImage.Width, oImage.Height)

    Nur hab ich keinen Ansatz wie :(

    Danke und Grüße nochmal
    Nicht

    samson schrieb:

    proportional
    geht das so:

    VB.NET-Quellcode

    1. Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    2. Dim gr As Graphics = e.Graphics
    3. ' Verweis auf das Bild festlegen
    4. Dim oImage As Image = PictureBox1.Image
    5. ' Rechteck für den Ausdruck festlegen
    6. ' Position + Originalgröße
    7. Dim rr = e.MarginBounds
    8. ' Bild drucken im angegebenen Rechteck drucken
    9. gr.DrawImage(oImage, rr)
    10. 'gr.Dispose()
    11. End Sub
    Proportional musst Du noch ein wenig rechnen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!

    samson schrieb:

    zusammen
    Ja. das sagte ich doch.
    Nun musst Du nur noch die x- oder die y-Dimension stauchen, je nach dem, ob das Bild zu breit oder zu hoch ist.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!