Конференция "Media" » Как при переносе текста изменить '...' на какойто перенос. [D7, WinXP]
 
  • 452 © (23.02.08 23:06) [0]

    procedure MyDrawText(DC: HDC; AR: TRect; {AWidth: Integer;} AStr: String);
    var R: TRect; WR, WAR, HR, HAR: Integer;
    begin
    R:=AR;
    //R.Right:=R.Left+AWidth;
    DrawText(DC, PChar(AStr), -1, R, DT_CALCRECT or DT_WORDBREAK or DT_CENTER);
    WAR:=AR.Right-AR.Left;
    WR:=R.Right-R.Left;
    HAR:=AR.Bottom-AR.Top;
    HR:=R.Bottom-R.Top;
    R.Left:=AR.Left+((WAR-WR) div 2);
    R.Right:=R.Left+WR;
    R.Top:=AR.Top+((HAR-HR) div 2);
    R.Bottom:=R.Top+HR;
    DrawText(DC, PChar(AStr), -1, R, DT_WORDBREAK or DT_CENTER);
    end;

    function GetLongStr(Str:String): String;
    var N: Integer;
    begin
    for N:= 1 to StrToIntDef(Str, 10) do
    Result:=Str;
    end;

    function DivStr(var S: String; R: TRect;bmm,bmdc:HDC): String;
    var Flags: LongInt;
    begin
    Flags:=DT_WORDBREAK or DT_VCENTER or DT_CENTER or DT_MODIFYSTRING or DT_EDITCONTROL or DT_END_ELLIPSIS;
    InflateRect(R,-9,-9);
    Result:=Copy(S, 1, Length(S));
    DrawText(bmdc, PChar(S), -1, R, Flags);
    MyDrawText(bmm,R,PChar(S));
    S:=StrPas(PChar(S));
    if Length(Result)>=(Length(S)+3) then Delete(Result, 1, Length(S)-3) else Result:='';
    end;


    функцыи отображают текст посредине битмапа по горизонтали и вертикали и переносят текст на новый битмап (если мнгого текста)

    repeat
    PS:=DivStr('Text demo tttt', R,bitmaptest,bitmap)
    until PS='';


    нужно сделать умный перенос Русского текста на новий битмап.
  • 452 © (24.02.08 11:14) [1]

    Flags:=DT_WORDBREAK or DT_VCENTER or DT_CENTER or DT_MODIFYSTRING or DT_EDITCONTROL or DT_END_ELLIPSIS;
    DrawText(bmdc, PChar(S), -1, R, Flags); //Здесь виртуально прорисовивается текст для нахождения eво R


    Flags:= ... or DT_MODIFYSTRING or DT_EDITCONTROL or DT_END_ELLIPSIS;


    ети флаги позволяют расчитать текст который поместится в заданых размерах если слово не помещается тогда происходит обрыв строки например Сообщени... на новом канвасе е
    Нужно сделать перенос Русского текста алгоритмы переноса я нашел вопрос в другом как ево интегрировать.
  • 452 © (24.02.08 19:10) [2]
    Да Вижу никто ничево незнает. Или все заняты. Или просебя подумали да пошел он ...google.ru Там я ничево ненашел :)
 
Конференция "Media" » Как при переносе текста изменить '...' на какойто перенос. [D7, WinXP]
Есть новые Нет новых   [133929   +473][b:0][p:0.001]