Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2010.03.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Media";
Текущий архив: 2010.03.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.005 c
3-1235995874
Faiwer
2009-03-02 15:11
2010.03.14
Delphi компоненты не хотят работать с пустыми полями


2-1263391211
arina
2010-01-13 17:00
2010.03.14
TRadioButton в форме ромба


2-1262902311
dis12345
2010-01-08 01:11
2010.03.14
скрыть панель задач


2-1263309374
Евгений Р.
2010-01-12 18:16
2010.03.14
Работа с tAdoQuery


2-1263237497
Olya
2010-01-11 22:18
2010.03.14
как записать символ в юникоде





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский