| 

.NET C# Java Javascript Exception

6
Ich habe in einem Programm ein Steuerelement für die Fortschrittsanzeige gesehen, bei dem Text zum Teil links- und zum Teil rechtsbündig in einer einzelnen Zeile ausgegeben wird. Ich möchte ein solches Steuerelement für die Windows Forms mit GDI+ nachbilden. Doch wie bilde ich eine solche Textausgabe am sinnvollsten nach? Muss ich die zwei Texte getrennt und positioniert ausgeben oder gibt es die Möglichkeit das mit einer einzelnen Textausgabe über Tabulatoren zu definieren?
News:
03.06.2013
Volker Nemm 391 7
2 Antworten
1
Der beste Weg ist der, den Karill beschreibt. Die Methoden zur Textausgabe bieten lediglich allgemeine Formatierungen für eine einzelne Textausgabe an. Diese kann linksbündig, zentriert oder rechtbündig formatiert - bezogen auf einen Graphics-Ausgabebereich - werden. Der linke Text in einem bestimmten Bereich wird dementsprechend linksbündig und der rechte Text rechtsbündig ausgegeben. Tabulatoren werden generell nicht unterstützt, müssten also benutzerdefiniert verwaltet und nachgebildet werden.

Das einzige Steuerelement, das weitere Textformatierungen bietet, ist das RTF-Textfeld. Allerdings sind hier nur grundlegende Funktionen per Eigenschaften offengelegt. Allerdings lassen sich mit RTF-Steuercodes erweiterte Funktionalitäten einbinden (z.B. Tabellen, Grafiken oder auch Tabulatoren). Nähere Informationen zu diesen Steuercodes findest Du in der entsprechenden Spezifikation. Allerdings hat das RTF-Textfeld für die allgemeine Nutzung einige Schwächen. In den Hintergrund können weder Grafiken noch Farbverläufe platziert werden.
05.06.2013
Jörg P. 332 1 6
Ich habe das mal mit der links- und rechtbündigen Formatierung und der Methode Graphics.DrawString, der StringFormat-Klasse sowie den SztringFormat-Flags experimentiert und kann damit meine Lösung umsetzen. Danke an alle, die sich bei dieser Frage beteiligt haben! Ich habe mich aufgrund der Hinweise gegen ein RTF-Textfeld entschieden.
Volker Nemm 10.06.2013
1
Tabulatoren oder andere Füllzeichen sind aus meiner Sicht für diesen Zweck eher ungeeignet (da zu ungenau und zu viel Rechenaufwand bis man die richtige Anzahl der Füllzeichen ermittelt hat), ich würde beide Texte getrennt voneinander zeichnen.

Die Position des rechtsbündigen Textes lässt sich ermitteln, indem man die Breite des Textes via MeasureString des benutzten Graphics-Objects nutzt (was in dem Fall ja das Graphics-Object des Controls selbst sein sollte, also z.B. e.Graphics wenn man die OnPaint-Methode überschreibt und darüber arbeitet).
04.06.2013
Karill Endusa 1,5k 1 9
Ok, das leuchtet ein, danke!
Volker Nemm 10.06.2013

Stelle deine .net-Frage jetzt!