C# - Szöveg automatikus rövidítése kiíráskor

forráskód letöltése
Ha úgy kell különféle feliratokat megjelenítenünk egy alkalmazásban, hogy a szöveg által elfoglalható terület mérete korlátozott és nem változhat, akkor előfordulhat, hogy a szövegünk hosszabb, mint amekkora hely rendelkezésre áll a kiíráshoz. Ilyen esetben rövidítenünk kell a szöveget, melyhez segítséget is kapunk a GDI+ által.
A megoldást a StringFormat osztályban kell keresnünk. Van ennek egy Trimming property-je, melyben azt szabályozhatjuk, hogy mi történjen akkor, ha egy szöveg kiírásakor elfogy a rendelkezésre álló terület. Mivel a szöveget a DrawString függvénnyel rajzoljuk ki, így itt egy Rectangle típusban meghatározhatjuk, hogy a szöveg megjelenítése mely téglalapban történjen. Alábbi példában a kirajzolást úgy végezzük el, hogy ha a szöveg nem fér el a megadott téglalapban, akkor csak annyi szó jelenjen meg, mely elfér, majd három ponttal legyen jelezve, hogy még lennének szavak a kiírandó szövegben, de helyhiány miatt azok már nem jelenhettek meg.
      StringFormat sf= new StringFormat();
      sf.Trimming=StringTrimming.EllipsisWord;
      g.DrawString(s, f, sb, r, sf);
      g.DrawRectangle(p, r);
A vágás módját a StringTrimming felsorolt típus elemei közül választhatjuk, melyek az alábbi értéket vehetik fel.
Érték Leírás
Character A területen annyi karakter jelenik meg, amennyi csak lehetséges.
EllipsisCharacter A területen annyi karakter jelenik meg, amennyi csak lehetséges, de a hely elfogyása esetén a szövegünk végén három pont kerül kirajzolásra jelezve, hogy nem fért ki a teljes felirat.
EllipsisPath A területen annyi karakter jelenik meg, amennyi csak lehetséges, de a hely elfogyása esetén a szövegünk közepén három pont jelenik meg jelezve, hogy nem fért ki a teljes felirat. Ebben a módban tehát olvasható lesz a szöveg eleje és a vége is.
EllipsisWord A területen annyi szó jelenik meg, amennyi csak lehetséges, de a hely elfogyása esetén a szövegünk végén három pont kerül kirajzolásra jelezve, hogy nem fért ki a teljes felirat.
None Nincs megadva vágás.
Word A területen annyi szó jelenik meg, amennyi csak lehetséges.