Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#18

AW: Textlänge abschneiden

  Alt 17. Jun 2016, 21:50
Hast du eine Möglichkeit die effektive Breite eines Zeichens abzufragen?
Geht das nicht mit tsFontGetCharParameteri ?

Dann so eine Funktion der ShortenText mitgeben und du bekommst den Text, den du zeichnen kannst.
Ja doch..
Delphi-Quellcode:
          // Parse width of Glyph
           for I := 0 to High(Char) do
           begin
             Char[I] := WideChar(SongNameTmp[I]);
             CharLength := tsFontGetCharParameteri(Char[I], TS_CHAR_GLYPHRECT_RIGHT);
             CharLen := CharLen + CharLength;
           end;
CharLength ist die länge des Aktuellen Chars basierend auf i

Nur wie soll ich da den Titel mit kürzen.
Es geht aber wie man an den Bildern sieht ist der Abstand zur Zeitanzeige basierend auf der Breite der Chars unterschiedlich.
Aber vielleicht geht es auch nicht anders. ?

Ich setze hier die länge des Strings auf 58.

SongName := PAnsiChar(Ansistring(Ansimidstr(string(SongNameTmp), 1, 58) + '...'));

Die 58 jedoch ist eigentlich der Bereich den ich berechnen müsste, wenn ich denn einen Anhaltspunkt hätte.

gruss

Geändert von EWeiss (17. Jun 2016 um 21:54 Uhr)
  Mit Zitat antworten Zitat