Mittig drucken ohne Rectangle?

  • VB.NET
  • .NET (FX) 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Drahuverar.

    Mittig drucken ohne Rectangle?

    Hey Leute,

    mal eine kleine Frage für zwischendurch.

    Kann ich ohne ein Rectangle mein String mittig ausrichten? (Alignment) [Graphics.DrawString]
    Müsste ja nur mein Rectangle weiß machen.. damit man es nicht sieht, das geht mir aber ziemlich auf den S*ck, um ehrlich zu sein.
    Anhand des Druckers (X,Y Daten) könnte ich mir ja auch einfach die Position errechnen, das geht mir aber auch etwas auf den Nerv-
    gibt es da nichts "einfacheres"?

    Zur Not muss ich halt was machen, aber sicherlich gibt es auch eine einfachere Möglichkeit..? :huh:

    Für Tipps und Ratschläge wäre ich euch Dankbar.
    Vielleicht denk ich auch wieder in die falsche Richtung, keine Ahnung.
    Weiß halt nicht, ob ich ein "Zeilenrechteck" machen soll, um die Mitte zu ermitteln, oder direkt die Position anhand des Druckerrandes berechne...

    Grüße,
    Drahuverar
    Option Strict On!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Drahuverar“ ()

    Wie kommst du darauf, dass du das Rechteck mit zeichnen müsstest?
    Das bewirken in dem Beispiel auf der verlinkten Seite die beiden Zeilen

    VB.NET-Quellcode

    1. Dim blackPen As New Pen(Color.Black)
    2. e.Graphics.DrawRectangle(blackPen, x, y, width, height)
    , diese sind jedoch nicht erforderlich, damit der Text gezeichnet wird. Ich vermute das dient der Veranschaulichung.
    Vielleicht habe ich mich auch einfach nur festgefahren und morgen würde ich drauf kommen, wie es einfacher geht.
    Aber ich gehe davon aus, das Point verlangt wird bei e.Graphics.DrawString, um den Text Mittig auszurichten.. Diesen Point nimmt er sich ja über das "gezeichnete" Rechteck oder denke ich da nun komplett falsch?
    ________
    Edit: Ach so.. ja klar.. Ich brauch den ja nicht zeichnen... nur als Referenz nehmen :whistling:
    Oh Mann.......
    ________

    Kann man das dennoch einfacher gestalten? Das der Text "einfach" Mittig gedruckt wird?
    Option Strict On!
    Ich sehe nicht, was einfacher sein sollte als das Rechteck anzugeben, in dem der Text mittig gezeichnet werden soll.
    Wolltest du den Text nur durch Angabe einer Position zeichnen müsstest du alles manuell machen, was die Methode, die ein Rechteck entgegennimmt, bereits für dich erledigt, nämlich die Abmessungen des Textes berechnen und dann doch wieder anhand des äußeren Rechtecks die korrekte Position berechnen.
    Wollte halt eigentlich mittels [ContentAlignment]die ganze Sache im PrintPage-Event regeln..

    VB.NET-Quellcode

    1. Dim FontHeader As New Font("Arial", 16, FontStyle.Bold)
    2. e.Graphics.DrawString("Überschrift", FontUeberschrift, Brushes.Black, ContentAlignment.MiddleCenter, 10)

    Keine Ahnung wieso, aber es wird nicht mittig ausgerichtet,.. Aus dem Grund der ganze Käse mit dem Rechteck.

    ______
    Edit: Also ich glaube, ich lasse es für heute echt sein. ​ContentAlignment.BottomLeft, ich wiederhole BottomLeft, macht es augenscheinlich Mittig.. allerdings fehlen ein paar Pixelchen (10) um sagen zu können, dass es Mittig ist.. 8o ?(
    ______
    Option Strict On!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Drahuverar“ ()

    Es gibt ja auch keine Überladung von DrawString, die ein ContentAlignment entgegennimmt.
    Und das aus gutem Grund, denn es gibt ja keinen Anhaltspunkt gegenüber dem der Text ausgerichtet werden könnte. Die Zeichenfläche ist theoretisch unendlich groß (praktisch begrenzt durch int16.maxvalue soweit ich weiß).
    Okay. Danke Dir, dass habe ich verstanden. Dachte nur, es sei "einfacher" dadurch.

    Bah.. Drucken macht echt kein Spaß :(
    Und vor allem, wenn man es nur einmal im Jahr macht.

    Nein, alles klar nun. Ich weiß Bescheid, werde dann nun Mittels PageBounds.Width das Rechteck erstellen und durch StringFormat() den Text Mittig ausrichten.

    Vielen Dank.
    (Hänge gleich noch eine kleine Solution an, falls jemand so verrückt wie ich sein sollte und eine Lösung sucht..)
    Dateien
    Option Strict On!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Drahuverar“ ()