![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как вывести текст на Canvas в столбик с выравниванием по ширине ? [D7, ME]
X-Fi © (2005-10-16 01:19:00)Как в Интернет Эксплорере. Может кто-нибудь написал такую полезную функцию ? Или может она есть в какой-нибудь известной библиотечке ?
Zeqfreed (2005-10-21 14:26:00) [1]X-Fi (21.10.05 2:41) [25]
А можно я чего-нибудь взамен дам? А именно, оч-чень полезную ссылку: http://lleo.aha.ru/na/
X-Fi (2005-10-21 02:41:00) [2]
> Antonn © (20.10.05 08:04) [24]
> X-Fi (20.10.05 7:49) [23]
> смотри пост [14]
Мало того, что ты неблагодарный, так ещё и хам. Ну-ну. Пусть к тебе относятся также. С хамством и недавая тебе ничего взамен.
Antonn (2005-10-20 08:04:00) [3]X-Fi (20.10.05 7:49) [23]
смотри пост [14]
X-Fi (2005-10-20 07:49:00) [4]
> Antonn © (20.10.05 06:54) [22]
>
> X-Fi (20.10.05 6:44) [21]
> Вот видишь, это я тебе сделал интересно.
> ну и?
А ты мне нет. Неблагодарный !
Antonn (2005-10-20 06:54:00) [5]X-Fi (20.10.05 6:44) [21]
Вот видишь, это я тебе сделал интересно.
ну и?
> И те, кто говорят, что правила нафиг ненужны,
я не говорил что они нафиг не нужны. я говорил, что разбираюсь в коде собственного написания.
X-Fi (2005-10-20 06:44:00) [6]
> Antonn © (20.10.05 06:38) [20]
>
> X-Fi (20.10.05 5:17) [19]
> Тогда зачем писал ?
> А я для себя писал, интересно стало.
Вот видишь, это я тебе сделал интересно.
> Причем тут психика?
А при том. Что на её основании и были написаны правила оформления кода. И те, кто говорят, что правила нафиг ненужны, и что у них психика какая то особенная - врут.
Antonn (2005-10-20 06:38:00) [7]X-Fi (20.10.05 5:17) [19]
Тогда зачем писал ?
А я для себя писал, интересно стало. Типа тренировки. Уже нашел ей применение в одном из проектов.
> А по моему ты лукавишь. Психика работает у всех по
> одним законам, и ты не исключение.
Причем тут психика? Не нравится форматирование - переворматируй. А лучше сотри его и пиши сам.
X-Fi (2005-10-20 05:17:00) [8]
> Antonn © (20.10.05 01:58) [18]
>
> X-Fi (20.10.05 1:44) [17]
> А я думал, что это ты так спасовал перед трудностью.
> ничуть, у меня это заняло около 20 минут. Но постить не
> буду.
Тогда зачем писал ?
> > А по моему ты лукавишь. Этот стиль называется "стена
> > текста", он непонятен никому.
>
> он мне понятен, код писан для себя, а не для кого-то.
А по моему ты лукавишь. Психика работает у всех по одним законам, и ты не исключение.
Antonn (2005-10-20 01:58:00) [9]X-Fi (20.10.05 1:44) [17]
А я думал, что это ты так спасовал перед трудностью.
ничуть, у меня это заняло около 20 минут. Но постить не буду.
> А по моему ты лукавишь. Этот стиль называется "стена
> текста", он непонятен никому.
он мне понятен, код писан для себя, а не для кого-то. Тут, кстати, урезан, поэтому один семафор лишний.
X-Fi (2005-10-20 01:44:00) [10]
> Antonn © (19.10.05 09:33) [15]
> а я только запостил функцию растягивания текста, а остальное
> - сам, не так уж и сложно.
А я думал, что это ты так спасовал перед трудностью.
> превосходно разбираюсь, потому так и пишу, для себя ведь
А по моему ты лукавишь. Этот стиль называется "стена текста", он непонятен никому.
Fenik (2005-10-19 18:25:00) [11]> Джо © (17.10.05 02:51) [3]
> procedure DrawCenteredText (Left,Top,Width: Integer; AStrings: TStrings; ACanvas: TCanvas);
> var
> I: Integer;
> begin
> for I := 0 to AStrings.Count-1 do
> begin
> ACanvas.TextOut ((Left + Width div 2)-(ACanvas.TextWidth(AStrings[I]) div 2), Top, AStrings[I]);
> Inc(Top,ACanvas.TextHeight('Qq'));
> end;
> end;
Каков велосипед :))
А есть такая чудная функция DrawText и флажок к ней DT_CENTER.
Antonn (2005-10-19 09:33:00) [12]X-Fi (19.10.05 1:39) [13]
Кстати, советую освоить правила стилистического оформления кода. А то ведь сам потом не разберёшься в своём коде.
превосходно разбираюсь, потому так и пишу, для себя ведь. Хотя мог бы и не постить, если другим так трудно разобраться(и если действительно нужно разбираться)...
А где же перенос ?
а я только запостил функцию растягивания текста, а остальное - сам, не так уж и сложно.
Gydvin (2005-10-19 06:19:00) [13]X-Fi (19.10.05 01:39)
Даа, тяжелый случай
X-Fi (2005-10-19 01:39:00) [14]
> Antonn © (18.10.05 07:05) [12]
>
> X-Fi (16.10.05 1:19)
> будешь хамить, по жизни влипнешь...
По себе судишь. Если влип ты, то это не значит что влипнет кто-то другой.
Программист программисту рознь. Если программисты маленькие и слабые, а есть большие и сильные.
> Примерно так:
А где же перенос ? В хтмл<p Align=justify>переносит длинный текст на следующую строку.
Кстати, советую освоить правила стилистического оформления кода. А то ведь сам потом не разберёшься в своём коде.
Не в обиду.
Antonn (2005-10-18 07:05:00) [15]X-Fi (16.10.05 1:19)
будешь хамить, по жизни влипнешь...
Как вывести текст на Canvas в с выравниванием по ширине за счет пробелов м/у словами?
Примерно так:
procedure _TextOut(Canvas:Tcanvas; _x,_y:integer; _Width:integer; _text:string);
var i,i_last,i_count,i_wid,_summ:integer; _semafore,_semaforeS:boolean;
begin
i_count:=0;
_text:=_text+' ';
for i:=1 to length(_text) do
if (_text[i]=' ') then i_count:=i_count+1;
i_wid:=((_Width-canvas.TextWidth(_text)) div (i_count-1))+canvas.TextWidth(' ');
_semafore:=false;_semaforeS:=false;i_last:=0; _summ:=0;
for i:=1 to length(_text) do begin
if (_text[i]=' ') then begin
if _semaforeS then begin
canvas.TextOut(_summ+_x,_y,copy(_text,i_last+1,i-i_last-1));
_summ:=_summ+i_wid+canvas.TextWidth(copy(_text,i_last+1,i-i_last-1));
end;
_semafore:=true; i_last:=i; _semaforeS:=false;
end else _semaforeS:=true;
end;
end;
(c) antonn
использование:
_TextOut(Image2.Picture.Bitmap.Canvas,50,50,200,'test slovo fuflo bla-bla-bla d7');
Джо (2005-10-18 05:05:00) [16]Вот интересно, почему большинство известных мне хамов еще и двоечники? Тенденция, однако.
(2005-10-18 05:00:00) [17]Удалено модератором
Джо (2005-10-18 03:09:00) [18]
> [8] X-Fi (18.10.05 01:38)
> Ну, так кто нибудь это сделал?
Ну, я сделал. Графическая библиотека для поддержки отчетов в своей программе. Могу продать исходники, недёшево.
X-Fi (2005-10-18 01:38:00) [19]
> Gydvin © (17.10.05 14:00) [6]
>
> X-Fi (17.10.05 06:29) [5]
> Аналог <p Align=justify> в hmtl.
>
> Ну и перебери код чтоб выравнивалось влево, а перед отрисовкой
> в каждой строке выясняй, колво слов-букв и сответственно
> занимаемое ими место textwidth, бери ширину канваса, отними
> суммарную ширину слов дели на колво слов-1, получишь растояние
> между словами-буквами (a). и далее все просто.
>
> textout(x,y,string1);
> textout(x+textwidth(string1)+a,y,string2);
> !!!!
Ну, так кто нибудь это сделал?
Джо (2005-10-17 14:43:00) [20]
> [4] MBo © (17.10.05 06:20)
А, неправильно прочитал вопрос.