Einzelnen Beitrag anzeigen

jokerfacehro
(Gast)

n/a Beiträge
 
#2

Re: truefontwidth + TWebBrowser

  Alt 10. Feb 2007, 11:34
hahaha ich bin so gut

ich hab es selber rausbekommen ^^

also
zuerst muss man wissen dass 16px = 12pt sind ^^
der webbrowser nimmt das als pt an.
und 16 pt ist größer als 16px ^^
ich hab meine schrift immer auf fsBold
dann muss man wissen, dass Font.Style:=[fsBold]
eine erhebliche verbreiterung der schrift nach sich zieht, wodurch sich meine autowrap funktion dahingehen verändetr hat :

Edit: funktion überarbeitet

Delphi-Quellcode:
procedure TForm1.autowrap(var str:string;maxwidth,fontsize:integer;fontfamiliy:string)
var i,j,linewidth,linecount:integer;
    tempstr,wrapstr:string;
    font1:TFont;
begin
font1:=TFont.Create;
font1.Size:=fontsize-4; // wichtig
font1.Name:=fontfamiliy;
font1.Style:=[fsBold]; // wichtig FontStyle solltet ihr mit übergeben, ich brauch das nicht ^^
linewidth:=TrueFontWidth(font1,str);
linecount:=linewidth DIV maxwidth;

if (linewidth - maxwidth)>0 then begin
i:=1;
j:=1;
tempstr:=str[1];
wrapstr:=str[1];
repeat
inc(i);
if (str[i]=#13) then
 wrapstr:='';
wrapstr:=wrapstr+str[i];
tempstr:=tempstr+str[i];
if (TrueFontWidth(font1,wrapstr)>(maxwidth*j)) then begin
 inc(j);
 tempstr:=tempstr+' ';
end;
until i>=Length(str);

str:=tempstr;
end;
str:=str+'
';
font1.Free;
end;
diese prozedur funktioniert einwandfrei
danke für eure postings lol
Miniaturansicht angehängter Grafiken
autowrap2_214.jpg  
  Mit Zitat antworten Zitat