Du musst grundsätzlich nur die Werte aus meinem Beispiel (Startpunkt 276, 75 statt 100, 100) anpassen. Du musst aber noch wissen wie hoch und breit der gedruckte Text ist. Daher ist es einfacher ein Recteck festzustellen (Trial&Error wenn es sein muss). Du kannst den Text auch messen (graphics.MeasureString() und graphics.MeasureCharacterRanges()). Entweder schreibst du einzelne Zeilen oder überlässt die Berechnung dem Graphics-Objekt, wie in meinem Beispiel oben. Hier ist noch ein Beispiel mit PrintDocument. Im Bild ist das schöne Ergebnis.
Allerdings ist Drucken oft eine sehr komplizierter Sache. Meistens überläßt man sowas Report-Software (oder Etikettendruck usw) wo die ganzen Probleme schon gelöst sind (sein sollten).
Public Class Form1
Private lines() As String
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) _
Handles MyBase.Load
lines = IO.File.ReadAllLines("F:\Test\upsidedown.txt")
End Sub
Private Sub PrintButton_Click(sender As System.Object, e As _
System.EventArgs) Handles PrintButton.Click
PrintDialog1.Document = PrintDocument1
If PrintDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
PrintDocument1.Print()
End If
End Sub
Private Sub PreviewButton_Click(sender As System.Object, e As _
System.EventArgs) Handles PreviewButton.Click
PrintPreviewDialog1.Document = PrintDocument1
PrintPreviewDialog1.ShowDialog()
End Sub
Private Sub PrintDocument1_PrintPage(sender As System.Object, e As _
System.Drawing.Printing.PrintPageEventArgs) Handles _
PrintDocument1.PrintPage
Dim pos As New Point(276, 75) ' Start position of rectangle for text
Dim ls As Integer = 21 ' Line spacing
Dim th As Integer = ls * lines.Count ' Rectangle height
Dim tw As Integer = 180 ' Rectangle width
Using f As New Font("Arial", 14, FontStyle.Bold)
e.Graphics.RotateTransform(180)
e.Graphics.TranslateTransform(-(tw + 2 * pos.X), -(th + 2 * pos.Y))
'e.Graphics.DrawRectangle(Pens.Green, pos.X, pos.Y, tw, th)
For Each line As String In lines
e.Graphics.DrawString(line, f, Brushes.Black, pos)
pos.Offset(0, ls)
Next
End Using
e.HasMorePages = False
End Sub
End Class ________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist |