Benutzer mit den meisten Antworten
Drucken mit PrintForm

Frage
-
Hallo Leute,
ich möchte mittels PrintForm eine Form ausdrucken.
Dies ist auch möglich, nur wird die Form am Ausdruck immer beschnitten.
Wie kann ich es realisieren, dass die Form größenangepasst gedruckt wird.
Ich habe es schon versucht, dass ich vor dem Druck die Formgröße auf den druckbaren Bereich anpasse:Form.Size = New Size(CInt(PrintForm.PrinterSettings.DefaultPageSettings.PrintableArea.Size.Height), CInt(PrintForm.PrinterSettings.DefaultPageSettings.PrintableArea.Size.Width))
(Height und Width sind vertauscht, weil ich im Querformat drucke)Die Sache verbessert sich zwar, jedoch wird die Form noch immer beschnitten. (weniger als zuvor)
Wenn ich beim obigen Code Korrekturwerte einfüge, dann schaffe ich es, dass korrekt gedruckt wird aber solche Korrekturen sind sicherlich nicht sinnvoll.
PrintForm.PrinterSettings.DefaultPageSettings.Landscape = True PrintForm.Print(Me, PowerPacks.Printing.PrintForm.PrintOption.FullWindow)
Vielen Dank im Voraus
Christian Tauschek
Christian Tauschek
Antworten
-
Hallo Christian,
Schau Dir mal folgende Diskussion http://social.msdn.microsoft.com/Forums/vstudio/en-US/82ac756c-ee78-4543-a81d-a7b7364d0842/form-got-cutoff-when-using-printform?forum=netfxbcl
Gruss,
Ionut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Als Antwort markiert Christian Tauschek Montag, 19. Mai 2014 11:59
Alle Antworten
-
Hallo Christian,
Schau Dir mal folgende Diskussion http://social.msdn.microsoft.com/Forums/vstudio/en-US/82ac756c-ee78-4543-a81d-a7b7364d0842/form-got-cutoff-when-using-printform?forum=netfxbcl
Gruss,
Ionut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Als Antwort markiert Christian Tauschek Montag, 19. Mai 2014 11:59
-
Hallo Ionut,
danke für deine Antwort.Ich habe es nun wie untenstehend realisiert. Den Code habe ich im Internet gefunden und diesen mit 'ScaleTransform' ergänzt, sodass ich das Bitmap für den druckbaren Bereich anpasse.
mfg
Christian' Bitmap-Objekt für die aktuelle Form Dim oBitmap As Bitmap ' Objekte für Ausdruck/Seitenvorschau Dim WithEvents PrintDocument As New Printing.PrintDocument Private Sub tstbutDrucken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tstbutDrucken.Click ' Rechteck in der benötigten Größe erstellen Dim oRect As New Rectangle(Me.Left, Me.Top, Me.Width, Me.Height) ' Bitmap-Objekt erstellen oBitmap = New Bitmap(oRect.Width, oRect.Height, Imaging.PixelFormat.Format24bppRgb) ' Screenshot des Desktops für das ausgewählten Rechteckes erstellen Using g As Graphics = Graphics.FromImage(oBitmap) g.CopyFromScreen(oRect.Left, oRect.Top, 0, 0, New Size(oRect.Width, oRect.Height)) End Using Dim PD As New PrintDialog() PD.UseEXDialog = True PD.PrinterSettings = PrintDocument.PrinterSettings If PD.ShowDialog = DialogResult.OK Then PrintDocument.PrinterSettings.PrinterName = PD.PrinterSettings.PrinterName PrintDocument.Print() 'drucken End If End Sub ' Hier erfolgt der Ausdruck des Bitmaps Private Sub PrintDocument_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument.PrintPage Dim maxX, MaxY As Single Dim gr As Graphics = e.Graphics oBitmap.RotateFlip(RotateFlipType.Rotate90FlipNone) 'Bitmap drehen Dim PS As Printing.PageSettings = PrintDocument.DefaultPageSettings 'den druckbaren Bereich berücksichtigen maxX = PS.PaperSize.Width - PS.Margins.Left - PS.Margins.Right MaxY = PS.PaperSize.Height - PS.Margins.Top - PS.Margins.Bottom ' Bitmap-Objekt drucken gr.ScaleTransform(maxX / oBitmap.Size.Width, MaxY / oBitmap.Size.Height) 'das Bitmap verkleinern gr.DrawImageUnscaled(oBitmap, PS.Margins.Left, PS.Margins.Top) e.HasMorePages = False ' Bitmap zerstören oBitmap.Dispose() End Sub
Christian Tauschek