Text Center Drucken

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von ManuelSoftware.

    Text Center Drucken

    Servus Leuter,

    wie kann ich ein Text aus der Textbox im Center Drucken?
    hab schon einige Sachen versucht aber nichts führte zu einer Lösung :(

    Hier der Aktuelle Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public Sub PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
    3. Dim displayRectangle As New Rectangle(New Point(40, 40), New Size(80, 80))
    4. Dim format1 As New StringFormat(StringFormatFlags.NoClip)
    5. Dim format2 As New StringFormat(format1)
    6. format1.LineAlignment = StringAlignment.Near
    7. format1.Alignment = StringAlignment.Center
    8. format2.LineAlignment = StringAlignment.Center
    9. format2.Alignment = StringAlignment.Far
    10. e.Graphics.DrawString(TextBox1.Text, New Font("Arial", 15, FontStyle.Bold), Brushes.Black, RectangleF.op_Implicit(displayRectangle), format1)
    11. End Sub
    12. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    13. Dim pd As New Printing.PrintDocument
    14. AddHandler pd.PrintPage, AddressOf PrintPage
    15. pd.Print()
    16. End Sub
    17. End Class
    Text aus der Textbox im Center Drucken
    Na das ist ja hingeschmissen. In welchem Center? Unter Drucken verstehe ich den Text ausdrucken und das geht ja einfach (msdn.microsoft.com/de-de/library/cc464107(v=vs.71).aspx). Am besten du nimmst eine RichTextBox und mit My.Computer.Filesystem.WriteAllText("myFile.txt", RichTextBox1.Text, False) sollte es dann klappen.

    Grüße, ExteNesia.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ExteNesia.de“ ()

    @Pixxxas Frau Google nach vb.net text zentriert drucken fragen und der erste Link führt Dich zum Ziel, gugst Du hier.
    Ich hab das Rechteck in die Mitte positioniert und den Font vergrößert sowie einen Font-Using-Block kreiert.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Using dlg = New PrintPreviewDialog
    4. dlg.Document = Me.PrintDocument1
    5. dlg.ShowDialog()
    6. End Using
    7. End Sub
    8. Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    9. Dim text1 As String = "Use StringFormat and Rectangle objects to center text in a rectangle."
    10. Dim rect1 = e.PageBounds 'As New Rectangle(10, 10, 130, 140)
    11. rect1.Inflate(-200, -300)
    12. ' Create a StringFormat object with the each line of text, and the block
    13. ' of text centered on the page.
    14. Dim stringFormat As New StringFormat()
    15. stringFormat.Alignment = StringAlignment.Center
    16. stringFormat.LineAlignment = StringAlignment.Center
    17. Using font1 As New Font("Arial", 20, FontStyle.Bold)
    18. ' Draw the text and the surrounding rectangle.
    19. e.Graphics.DrawString(text1, font1, Brushes.Blue, rect1, stringFormat)
    20. e.Graphics.DrawRectangle(Pens.Black, rect1)
    21. End Using
    22. End Sub
    23. End Class

    =====
    @ExteNesia.de What :?:
    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).
    Programmierfragen über PN / Konversation werden ignoriert!
    Guten Morgen,

    Ich habe zu dem obigen Code von RodFromGermany mal eine Frage, da ich gerade auch versuche ein Dokument zu erstellen, und selbst noch in der Lernphase bin.
    Was genau bewirkt Dim rect1 = e.PageBounds?
    PageBounds ist doch der gesamte Bereich der Seite, oder? Wird dadurch das Rectangle automatisch auf der Seite zentriert, und mit Inflate kann dann die grösse in x und y geändert werden?


    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    @Akanel Das auskommentierte Rectangle ist die Vorgabe vom Beispiellink, diesen habe ich bearbeitet.
    e.PageBounds ist der bedruckbare Bereich, den ich vermöge Inflate() etwas kleiner mache.
    Die Zentrierung selbst wird durch die StringFormat-Instanz realisiert.
    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).
    Programmierfragen über PN / Konversation werden ignoriert!
    Vielen Dank für die schnelle Antwort.
    Mittels StringFormat wird doch der Text innerhalb des Rectangles zentriert.
    Ich meinte jetzt aber ob mit e.pageBounds das Rectangle selbst auf der Seite zentriert wird.
    Ich hatte versucht das ganze noch zu verschieben, was aber mit PageBounds nicht funktionierte. Daher meine Frage.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    @Akanel PageBounds ist eine ReadOnly Property, da kannste nix machen. Deswegen muss das Rectangle einer separaten Variable zugewiesen werden, die kann manipuliert und dann verwendet werden.
    Mit welchem Code hast Du denn das Rectangle verschoben?
    Dim rect1 = New Rectangle(10, 10, 130, 140) befüllt ein Rectangle links oben im Druckbereich.
    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).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich hatte versucht ob PageBounds Werte annimmt in dem ich danach einfach mal eine "(" gesetzt habe und schaue was Intellisens mir anbietet. Da war aber nichts :)
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.

    Akanel schrieb:

    Da war aber nichts
    Klick mal mitz der Maus drauf, da kommt dies:
    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).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Pixxxas Stell mal bitte die Frage so, dass die Antwort darauf das ist, was Dir weiter hilft.
    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).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Pixxxas indem Du den Text nur horizontal, nicht aber vertikal zentrierst:

    VB.NET-Quellcode

    1. Dim stringFormat As New StringFormat()
    2. stringFormat.Alignment = StringAlignment.Center
    3. 'stringFormat.LineAlignment = StringAlignment.Center ' <= diese Zeile auskommentieren
    Der Rest wie oben.
    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).
    Programmierfragen über PN / Konversation werden ignoriert!

    Pixxxas schrieb:

    wie kann ich diesen Rahmen weg machen
    Sieh Dir den Code bitte noch einmal gaaaaaaanz genau an. ;)
    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).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hab schon danke :)

    VB.NET-Quellcode

    1. Dim text1 As String = TextBox1.Text & vbNewLine & TextBox2.Text
    2. Dim rect1 = e.PageBounds
    3. Dim stringFormat As New StringFormat()
    4. stringFormat.Alignment = StringAlignment.Center
    5. Using font1 As New Font("Arial", 20, FontStyle.Bold)
    6. e.Graphics.DrawString(text1, font1, Brushes.Blue, rect1, stringFormat)
    7. End Using