none
Text aussrichten RRS feed

  • 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.StringAlignment

    drawalign = 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

    Donnerstag, 17. Dezember 2015 12:32

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 If

    Ich 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 If

    Da 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

    Freitag, 18. Dezember 2015 13:27

Alle Antworten

  • Ich hab das Problem gerade selbst gelöst.

    Somit ist meine Frage nicht mehr akut.

    Gruß

    Det

    Donnerstag, 17. Dezember 2015 16:20
  • 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

    • Als Antwort markiert Det52 Freitag, 18. Dezember 2015 13:28
    • Tag als Antwort aufgehoben Det52 Freitag, 18. Dezember 2015 13:28
    Freitag, 18. Dezember 2015 11:25
    Moderator
  • 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 If

    Ich 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 If

    Da 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

    Freitag, 18. Dezember 2015 13:27