Hallo Zusammen.
die SuFu und Google haben mir bist jetzt nicht wirklich weitergeholfen
Ich habe eine Druck-Klasse entworfen. Gedruckt werden Rechnungen und Angebote. Ich möchte herausfinden, wie viele Zeilen mein Text benötigt. Ein Rechteck, wo der Text gezeichnet werden darf wird vorgegeben. Ebenso kann ich mit MeasureString messen. Leider erhalte ich in der Höhe falsche werte.
Hier mein Code, wie mir bis jetzt die Zeilenanzahl zurück gegeben wird
Mit TextHoehe wird die Höhe von dem zu druckendem Text ausgegeben. Mit VergleichHoehe erstell ich mir einen Vergleich, wie Hoch eine Zeile wird.
Wenn ich jetzt TextHoehe / VergleichHoehe rechne, müsste ich doch normalerweise die Anzahl der Zeilen gekommen?
Im Anhang ein Screenshot, welches den Fehler sichtbar macht. Der Code berechnet, das 22 Zeilen benötigt werden, jedoch werden 24 Zeilen benötigt
die SuFu und Google haben mir bist jetzt nicht wirklich weitergeholfen
Ich habe eine Druck-Klasse entworfen. Gedruckt werden Rechnungen und Angebote. Ich möchte herausfinden, wie viele Zeilen mein Text benötigt. Ein Rechteck, wo der Text gezeichnet werden darf wird vorgegeben. Ebenso kann ich mit MeasureString messen. Leider erhalte ich in der Höhe falsche werte.
Hier mein Code, wie mir bis jetzt die Zeilenanzahl zurück gegeben wird
Quellcode
- Private Sub WriteText(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs,
- ByRef Text As String,
- ByRef Options As Font_t,
- ByRef Zeile As UShort,
- ByRef Padding As UShort,
- ByRef Breite As UShort,
- ByRef Seite As UShort)
- 'Position ermitteln zum Zeichnen
- Const ZeilenFaktor As Byte = 12
- Dim Pos As Rectangle = New Rectangle(Padding, Zeile * ZeilenFaktor, Breite, height)
- Dim TextHoehe As UShort= e.Graphics.MeasureString(Text, New Font(Options.Name, Options.Size, Options.Style), Pos.Width).Height
- Dim VergleichHoehe As UShort= e.Graphics.MeasureString("W", New Font(Options.Name, Options.Size, Options.Style), Pos.Width).Height
- Dim Zeilen As UShort = TextHoehe / VergleichHoehe
- e.Graphics.DrawString(Text, New Font(Options.Name, Options.Size, Options.Style), Options.Color, Pos)
- Zeile += (Zeilen - 1)
- End Sub
Mit TextHoehe wird die Höhe von dem zu druckendem Text ausgegeben. Mit VergleichHoehe erstell ich mir einen Vergleich, wie Hoch eine Zeile wird.
Wenn ich jetzt TextHoehe / VergleichHoehe rechne, müsste ich doch normalerweise die Anzahl der Zeilen gekommen?
Im Anhang ein Screenshot, welches den Fehler sichtbar macht. Der Code berechnet, das 22 Zeilen benötigt werden, jedoch werden 24 Zeilen benötigt