Benutzer mit den meisten Antworten
Text aussrichten

Frage
-
Hallo,
ich gebe einen Text auf ein Bild aus.
Erfolge: Schriftfarbe klappt gut, Fontname klappt gut, Fontstile klappen alle
Misserfolg: Die Textausrichtung ist immer linksbündig, egal was ich versuche. Hier mein letzter Versuch:
Dim drawString As String = lblfügtext.Text
Dim drawStyle As System.Drawing.FontStyle
Dim drawalign As System.Drawing.StringAlignmentdrawalign = lblfügtext.TextAlign
Dim drawFont As New System.Drawing.Font(lblfügtext.Font.Name, schriftgröße * 100 / faktor, drawStyle)
Dim drawbrush As New System.Drawing.SolidBrush(txtfüg.ForeColor)
Dim drawformat As New System.Drawing.StringFormat(drawalign)Mappe.DrawString(drawString, drawFont, drawbrush, lblfügtext.Location.X * 100 / faktor, (lblfügtext.Location.Y - rand) * _100 / faktor, drawformat)
Die Problemstellen habe ich fett gedruckt. Was mach ich da falsch?
Gruß
Det
Antworten
-
Vielen Dank, Tom.
Du siehst, ich bin im Umgang mit Foren extrem ungeübt. Natürlich will ich nicht meine Lösung nur für mich haben. Gerne poste ich sie für alle. Ich hoffe, ich kann das hier an dieser Stelle tun. Falls ich mich da nicht geschickt anstellen sollte, würde ich dich bitten, die Lösung an entsprechender Stelle zu platzieren.
Es ging darum, Text von einem Label auf ein Bild zu übertragen, wobei der Text rechtsbündig, zentriert oder linksbündig ausgegeben werden kann.
Hier der Teil des Codes, den ich neu hinzugefügt habe:
Dim stringFormat As New StringFormat()
'Text ausrichten
If lblfügtext.TextAlign = ContentAlignment.MiddleLeft Then
stringFormat.Alignment = StringAlignment.Near
ausgleich = 0
End If
If lblfügtext.TextAlign = ContentAlignment.MiddleCenter Then
stringFormat.Alignment = StringAlignment.Center
ausgleich = lblfügtext.Width / 2
End If
If lblfügtext.TextAlign = ContentAlignment.MiddleRight Then
stringFormat.Alignment = StringAlignment.Far
ausgleich = lblfügtext.Width
End IfIch habe DrawFormat durch StringFormat ersetzt.
If Original.Width > Original.Height Then
rand = (pct1.Image.Height * faktor / 100 - pct1.Height) / 2 * -1
Mappe.DrawString(drawString, drawFont, drawbrush, (lblfügtext.Location.X + ausgleich) * 100 / faktor, (lblfügtext.Location.Y - rand) * 100 / faktor, stringFormat)
End IfDa bei dieser Art der Text zwar entsprechend ausgerichtet ausgegeben wird, aber bei 'center' und 'far' nicht richtig positioniert wird, habe ich die Variable 'ausgleich as single' hinzugefügt
Wie die Variable 'ausgleich' belegt wird ist oben zu sehen.
Gruß
Det
- Als Antwort markiert Elmar BoyeEditor Freitag, 18. Dezember 2015 14:08
Alle Antworten
-
Ich hab das Problem gerade selbst gelöst.
Somit ist meine Frage nicht mehr akut.
Gruß
Det
- Als Antwort markiert Det52 Donnerstag, 17. Dezember 2015 16:56
- Tag als Antwort aufgehoben Tom Lambert (Koopakiller)Moderator Freitag, 18. Dezember 2015 11:10
-
Hallo,
wenn du eine Lösung gefunden hast, dann wäre es schön diese hier zu posten. Sonst ist die Frage nicht für jeden beantwortet der diese hier liest und vielleicht das selbe Problem hat.
Ich hätte das jetzt versucht so zu lösen:
e.Graphics.DrawString("Linksbündig", SystemFonts.DefaultFont, Brushes.DarkOrange, New Point(150, 10)) Dim s As String = "Rechtsbündig" Dim size = e.Graphics.MeasureString(s, SystemFonts.DefaultFont) e.Graphics.DrawString(s, SystemFonts.DefaultFont, Brushes.DarkGreen, New Point(150 - CInt(size.Width), 10))
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Vielen Dank, Tom.
Du siehst, ich bin im Umgang mit Foren extrem ungeübt. Natürlich will ich nicht meine Lösung nur für mich haben. Gerne poste ich sie für alle. Ich hoffe, ich kann das hier an dieser Stelle tun. Falls ich mich da nicht geschickt anstellen sollte, würde ich dich bitten, die Lösung an entsprechender Stelle zu platzieren.
Es ging darum, Text von einem Label auf ein Bild zu übertragen, wobei der Text rechtsbündig, zentriert oder linksbündig ausgegeben werden kann.
Hier der Teil des Codes, den ich neu hinzugefügt habe:
Dim stringFormat As New StringFormat()
'Text ausrichten
If lblfügtext.TextAlign = ContentAlignment.MiddleLeft Then
stringFormat.Alignment = StringAlignment.Near
ausgleich = 0
End If
If lblfügtext.TextAlign = ContentAlignment.MiddleCenter Then
stringFormat.Alignment = StringAlignment.Center
ausgleich = lblfügtext.Width / 2
End If
If lblfügtext.TextAlign = ContentAlignment.MiddleRight Then
stringFormat.Alignment = StringAlignment.Far
ausgleich = lblfügtext.Width
End IfIch habe DrawFormat durch StringFormat ersetzt.
If Original.Width > Original.Height Then
rand = (pct1.Image.Height * faktor / 100 - pct1.Height) / 2 * -1
Mappe.DrawString(drawString, drawFont, drawbrush, (lblfügtext.Location.X + ausgleich) * 100 / faktor, (lblfügtext.Location.Y - rand) * 100 / faktor, stringFormat)
End IfDa bei dieser Art der Text zwar entsprechend ausgerichtet ausgegeben wird, aber bei 'center' und 'far' nicht richtig positioniert wird, habe ich die Variable 'ausgleich as single' hinzugefügt
Wie die Variable 'ausgleich' belegt wird ist oben zu sehen.
Gruß
Det
- Als Antwort markiert Elmar BoyeEditor Freitag, 18. Dezember 2015 14:08