Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.14;
Скачать: CL | DM;

Вниз

Как при переносе текста изменить ... на какойто перенос.   Найти похожие ветки 

 
452 ©   (2008-02-23 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 ©   (2008-02-24 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 ©   (2008-02-24 19:10) [2]

Да Вижу никто ничево незнает. Или все заняты. Или просебя подумали да пошел он ...google.ru Там я ничево ненашел :)



Страницы: 1 вся ветка

Текущий архив: 2010.03.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
2-1262713674
Nano-Tek
2010-01-05 20:47
2010.03.14
запрет копирования Explorer у


11-1214122344
Дмитрий
2008-06-22 12:12
2010.03.14
Работа с png


11-1213760070
AK
2008-06-18 07:34
2010.03.14
UNICODE_CTRLS с какой версии работает?


4-1230477330
Psycho
2008-12-28 18:15
2010.03.14
Активация без захвата фокуса клавиатуры


4-1230152087
snake
2008-12-24 23:54
2010.03.14
Установка ловушек в Vista