Ich habe mit folgender Routine eine Lösung gefunden:
dim c as Color
dim i,j,bis as integer
dim p as Picture
dim g as Graphics
dim black as Boolean
p=NewPicture(500,50,32)
if p=nil then Return -1
g=p.Graphics
g.TextSize=GOriginal.TextSize
g.TextFont=GOriginal.TextFont
bis=g.StringWidth(Text)*1.2
p=NewPicture(bis,30,32)
if p=nil then Return -1
g=p.Graphics
g.TextSize=GOriginal.TextSize
g.TextFont=GOriginal.TextFont
g.DrawString(Text,0,25)
for i =bis-1 downto 1
for j=1 to 29
c=g.Pixel(i,j)
if c<> &cFFFFFF then
black=true
Return i+1
end if
if black then exit
next
next
Für meine Zwecke hat es gereicht und vor allem hat es mir gezeigt,
dass StringWidth identische Werte ermittelt hat.
Im Ergebnis konnte ich dann feststellen, dass bei mir einige Zeilen in
Fett ausgegeben wurden und ich das nicht berücksichtigt hatte.
Nachdem ich nun vor der Ermittlung der Textlänge das Attribut Bold
korrekt setze, passt auch die von RS ermittelte Länge.
Für alle, die dasselbe Problem mit der falschen Länge haben,
empfehle ich eine ähliche Überprüfung.
MfG, Metti.