Wie wird ein zu breiter Text nach x Pixeln passend abgeschnitten?

Antwort

Um einen Text so abzuschneiden, dass er eine bestimmte maximale Breite in Pixeln nicht überschreitet, gehst du typischerweise wie folgt vor: 1. **Schrittweise Zeichen entfernen:** Du prüfst zeichenweise (oder in größeren Schritten), wie breit der Text mit `MeasureString` ist, und kürzt ihn, bis die gewünschte Breite erreicht ist. 2. **Optional: Ellipsis anhängen:** Oft wird am Ende ein "…" (Auslassungszeichen) angehängt, um anzuzeigen, dass der Text abgeschnitten wurde. Hier ein Beispiel in C# (Windows Forms, GDI+): ```csharp using System.Drawing; string TruncateTextToWidth(Graphics g, string text, Font font, float maxWidth) { if (g.MeasureString(text, font).Width <= maxWidth) return text; string ellipsis = "…"; int len = text.Length; while (len > 0) { string candidate = text.Substring(0, len) + ellipsis; if (g.MeasureString(candidate, font).Width <= maxWidth) return candidate; len--; } return ellipsis; } ``` **Hinweise:** - Die Methode ist nicht sehr effizient, da sie zeichenweise kürzt. Für lange Texte kann ein binäres Suchverfahren (`Binary Search`) verwendet werden, um schneller die passende Länge zu finden. - Die Methode funktioniert mit GDI+ (`System.Drawing.Graphics.MeasureString`). Für WPF oder andere Frameworks gibt es ähnliche Methoden. **Links:** - [System.Drawing.Graphics.MeasureString-Dokumentation (Microsoft)](https://learn.microsoft.com/de-de/dotnet/api/system.drawing.graphics.measurestring) Falls du eine andere Programmiersprache oder ein anderes Framework verwendest, bitte spezifizieren.

Frage stellen und sofort Antwort erhalten

Verwandte Fragen

Wie schneide ich einen Text in VB.NET 2003 nach einer maximalen Breite in Pixeln mithilfe von MeasureString ab?

Um in VB.NET 2003 einen Text so abzuschneiden, dass er eine bestimmte Pixelbreite (z. B. 200 Pixel) nicht überschreitet, kannst du eine Schleife verwenden, die den Text Zeichen für Zeichen k... [mehr]