Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как вывести текст на Canvas в столбик с выравниванием по ширине ? [D7, ME]


Страницы:   1 2

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)

А, неправильно прочитал вопрос.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо