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