Hallo Leute,
ich versuche schon seit einiger Zeit mein Problem mit dem drucken zu lösen.
Ich habe ein DataGridView was (blöderweise) eine Größe von 1280x720 Pixeln hat.
Ich will es ganz "normal" auf ein A4 Blatt drucken.
Die einzige Lösung die ich bisher gefunden hatte war das ganze auf die PaperSize von A4 zu skalieren (in dem Fall 1169x ca.658)
Und das Bild dann mit Drawing2D.InterpolationMode.HighQualityBicubic zu smoothen.
Dabei werden die dünnen Gridlinien sehr schwammig. Ach kleine Schriftgrößen werden qualitativ miserabel.
Kurz gesagt der Druck ist nicht akzeptabel.
Ich frage mich schon die ganze Zeit wofür es die DPI Zahl bei den PrinterSettings gibt und warum wenn ich sie ändere es keinen Effekt auf meine PaperSize hat?
Dieses Drucken macht mich noch wahnsinnig und es gibt nirgendswo ein gescheites Tutorial zu diesem Thema. Immer nur die "Drucken für Anfänger" Beschreibungen. Wie Drucke ich ein Text oder eine PictureBox. Aber alles immer im Rahmen der A4 PaperSize.
Hier ein kleiner Auszug aus meier PrintPage Routine:
(es werden vorher ein paar DefaultPageSettings vorgenommen wie:
Margins, Color = True und Landscape = True
und die restlichen Settings aus dem Dialog übernommen [PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings])
img ist das original Bild (DataGridView in einem TabPage)
'CODE
Dim newheight As Integer = img.Height / img.Width * (e.PageSettings.Bounds.Width - e.PageSettings.Margins.Left - e.PageSettings.Margins.Right)
Dim bild_klein As New Bitmap(e.PageSettings.Bounds.Width - e.PageSettings.Margins.Right - e.PageSettings.Margins.Left, newheight)
Dim g As Graphics = Graphics.FromImage(bild_klein)
g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
g.DrawImage(img, New Rectangle(0, 0, bild_klein.Width, bild_klein.Height), New Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel)
e.Graphics.DrawImage(bild_klein, e.PageSettings.Margins.Left, e.PageSettings.Margins.Top, bild_klein.Width, bild_klein.Height)
'CODE ENDE
Es wäre super cool wenn mir jemand den Zusammenhang mit den DPI und der PaperSize einfach mal kurz erklären könnte.
ich versuche schon seit einiger Zeit mein Problem mit dem drucken zu lösen.
Ich habe ein DataGridView was (blöderweise) eine Größe von 1280x720 Pixeln hat.
Ich will es ganz "normal" auf ein A4 Blatt drucken.
Die einzige Lösung die ich bisher gefunden hatte war das ganze auf die PaperSize von A4 zu skalieren (in dem Fall 1169x ca.658)
Und das Bild dann mit Drawing2D.InterpolationMode.HighQualityBicubic zu smoothen.
Dabei werden die dünnen Gridlinien sehr schwammig. Ach kleine Schriftgrößen werden qualitativ miserabel.
Kurz gesagt der Druck ist nicht akzeptabel.
Ich frage mich schon die ganze Zeit wofür es die DPI Zahl bei den PrinterSettings gibt und warum wenn ich sie ändere es keinen Effekt auf meine PaperSize hat?
Dieses Drucken macht mich noch wahnsinnig und es gibt nirgendswo ein gescheites Tutorial zu diesem Thema. Immer nur die "Drucken für Anfänger" Beschreibungen. Wie Drucke ich ein Text oder eine PictureBox. Aber alles immer im Rahmen der A4 PaperSize.
Hier ein kleiner Auszug aus meier PrintPage Routine:
(es werden vorher ein paar DefaultPageSettings vorgenommen wie:
Margins, Color = True und Landscape = True
und die restlichen Settings aus dem Dialog übernommen [PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings])
img ist das original Bild (DataGridView in einem TabPage)
'CODE
Dim newheight As Integer = img.Height / img.Width * (e.PageSettings.Bounds.Width - e.PageSettings.Margins.Left - e.PageSettings.Margins.Right)
Dim bild_klein As New Bitmap(e.PageSettings.Bounds.Width - e.PageSettings.Margins.Right - e.PageSettings.Margins.Left, newheight)
Dim g As Graphics = Graphics.FromImage(bild_klein)
g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
g.DrawImage(img, New Rectangle(0, 0, bild_klein.Width, bild_klein.Height), New Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel)
e.Graphics.DrawImage(bild_klein, e.PageSettings.Margins.Left, e.PageSettings.Margins.Top, bild_klein.Width, bild_klein.Height)
'CODE ENDE
Es wäre super cool wenn mir jemand den Zusammenhang mit den DPI und der PaperSize einfach mal kurz erklären könnte.