Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DrawText и табуляция / 25 сообщений из 26, страница 1 из 2
27.10.2017, 23:36:23
    #39543586
Ghost Writer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
Cтрока с символами табуляции:
Код: pascal
1.
S := := 'Съешь'+#9+'еще этих мягких'+#9+'французских'+#9+'булок,'+#9+'да выпей чаю.';


Рисую её с помощью DrawText:
Код: pascal
1.
DrawText(Canvas.Handle, PAnsiChar(S), Length(S), Rect, DT_EXPANDTABS or DT_WORDBREAK or DT_LEFT);


С моноширинными шрифтами, такими как Lucida Console, Courier New, рисуется одинаково и в соответсвии с википедией:
https://ru.wikipedia.org/wiki/Табуляция Встретив этот символ, терминал перемещает каретку (или курсор) вправо на ближайшую позицию табуляции. Традиционно эти позиции располагаются каждые 8 знакомест, в колонках 1, 9, 17, 25…

Для прочих шрифтов, таких как Arial, Segoe UI, Calibri, MS Sans Serif, длина табуляции тоже вроде выглядит сопоставимо.

Но для некоторых шрифтов, таких как Tahoma, Times New Roman, Arial Black, местами табуляция сильно отличается.

Хотелось бы понять как работает DrawText, как это зависит от шрифта, используется ли какой-то специальный пробельный символ и т.п.

Delphi 7, Win 7 x64
...
Рейтинг: 0 / 0
28.10.2017, 00:16:01
    #39543602
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
Ghost Writerкак это зависит от шрифта, используется ли какой-то специальный пробельный символ и т.п.

Раз уж пошёл на википедию, погугли заодно и "пропорциональные и моноширинные шрифты".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.10.2017, 00:17:53
    #39543603
Ghost Writer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
Dimitry Sibiryakovпропорциональные и моноширинные шрифтыгуглил. можете конкретнее ?
...
Рейтинг: 0 / 0
28.10.2017, 01:34:14
    #39543619
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
А задача-то в чем состоит? Случаем не разбить текст на строки и корректно их отрисовать, чтобы поместились? :D Так для этого совсем другие инструменты используются.
...
Рейтинг: 0 / 0
28.10.2017, 02:12:18
    #39543620
Ghost Writer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
JaDi,

разбить РАЗНОЦВЕТНЫЙ текст на строки и отрисовать идентично DrawText.
Используя только методы TCanvas, в частности Canvas.TextOut.
Не решен вопрос только с табуляцией.

JaDiдругие инструментыи какие ?
...
Рейтинг: 0 / 0
28.10.2017, 02:27:49
    #39543621
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
По разному. Например, у канваса есть TextWidth(текст) -- можно узнать требуемую ширину для отрисовки конкретного куска текста конкретным шрифтом-настройками. Или у того же DrawText есть флаг dt_calcrect и dt_wordbreak -- которые не рисуют текст, а выдают новый размер канваса, который нужен для полной отрисовки текста.
...
Рейтинг: 0 / 0
28.10.2017, 05:17:28
    #39543628
Aniskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
Ghost Writer,

Думается мне, что табуляция происходит не относительно последнего символа, а по фиксированным позициям. И в ситуациях, когда в слове "мягких" последние символы чуть выходят за очередную фиксированную позицию, и возникает большое расстояние до следующего слова.
...
Рейтинг: 0 / 0
28.10.2017, 10:20:43
    #39543640
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
Давно доступны исходники Windows 2000, среди которых, в том числе и DrawText.
...
Рейтинг: 0 / 0
28.10.2017, 10:41:39
    #39543641
Ghost Writer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
schi,

вроде не 1 апреля не поделитесь ссылкой ?
...
Рейтинг: 0 / 0
28.10.2017, 11:24:45
    #39543645
Aniskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
Эти утекшие исходники я качал в свое время с thepiratebay. Есть два разных архива - windows_nt_4_source_code.zip (229 MB) и windows_2000_source_code.zip (203 MB).
...
Рейтинг: 0 / 0
28.10.2017, 12:00:31
    #39543650
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
Ghost Writerможете конкретнее ?

Конкретно: у пропорциональных шрифтов символы имею разную ширину. В том числе и пробел, в
которые и расширяется табуляция (в соответствии с документацией на DT_EXPANDTABS).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.10.2017, 14:17:02
    #39543681
Ghost Writer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
Dimitry Sibiryakov,

это не новость.
...
Рейтинг: 0 / 0
28.10.2017, 14:21:51
    #39543683
Ghost Writer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
schi, Aniskin, спасибо, исходники помогли.

Я тоже их нагуглил, но µTorrent никак не хотел их скачивать и я прошел мимо.
Затем поставил галку "Вкл. DHT для новых торрентов" и пошло )

В общем, сначала надо было получить метрику шрифта
потом
Код: pascal
1.
TabLength := TxtMetric.tmAveCharWidth * 8;


и отступ будет по формуле
Код: pascal
1.
xLeft := (((xLeft - ATextRect.Left) div TabLength) + 1) * TabLength + ATextRect.Left
...
Рейтинг: 0 / 0
28.10.2017, 16:11:59
    #39543697
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
философски...
Много неочевидного сокрыто в отрисовке текста... Например одно и то же слово может отличаться при отрисовке длиной и начертанием в зависимости от того выводится ли оно через ExtTextOut или DrawText
...
Рейтинг: 0 / 0
28.10.2017, 16:35:13
    #39543701
asviridenkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
white_niggerфилософски...
Много неочевидного сокрыто в отрисовке текста... Например одно и то же слово может отличаться при отрисовке длиной и начертанием в зависимости от того выводится ли оно через ExtTextOut или DrawText

Это все фигня по сравнению с отрисовкой арабского текста, особенно когда нужно модификатор другим цветом нарисовать.
...
Рейтинг: 0 / 0
28.10.2017, 17:18:51
    #39543724
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
asviridenkovЭто все фигня по сравнению с отрисовкой арабского текста, особенно когда нужно модификатор другим цветом нарисовать.Как минимум юнискрайб тебе в руки
...
Рейтинг: 0 / 0
28.10.2017, 17:25:00
    #39543728
asviridenkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
white_niggerasviridenkovЭто все фигня по сравнению с отрисовкой арабского текста, особенно когда нужно модификатор другим цветом нарисовать.Как минимум юнискрайб тебе в руки

При чем тут юнискрайб? Юнискрайб на раны разобьет, так это я и без него могу. А вопрос то поставлен четко - нарисуй модификатор другим цветом.
...
Рейтинг: 0 / 0
28.10.2017, 19:35:02
    #39543772
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
asviridenkovПри чем тут юнискрайб? Юнискрайб на раны разобьет, так это я и без него могу. А вопрос то поставлен четко - нарисуй модификатор другим цветом.Так им отрисуй. Или я не совсем понимаю твою задачу. Рисунок того что нужно можешь прикрепить?
...
Рейтинг: 0 / 0
28.10.2017, 20:03:17
    #39543779
asviridenkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
white_niggerasviridenkovПри чем тут юнискрайб? Юнискрайб на раны разобьет, так это я и без него могу. А вопрос то поставлен четко - нарисуй модификатор другим цветом.Так им отрисуй. Или я не совсем понимаю твою задачу. Рисунок того что нужно можешь прикрепить?

Хром, и IE кстати, неправильно рисуют, только FF справился.
...
Рейтинг: 0 / 0
28.10.2017, 20:43:50
    #39543788
asviridenkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
white_nigger,

Сам текст

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<style>
body{
    font-family:tahoma;
    background-color: #F3F5F6;
    font-size: 300%;
}
</style>

 <div class="SubHr"><span>&#1576;</span><span style="color: #CC0000">&#1616;</span><span>&#1587;</span></div> 



У вас же ричэдитор есть, отобрази в нем так же.
...
Рейтинг: 0 / 0
29.10.2017, 18:43:40
    #39544043
Ghost Writer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
white_niggerодно и то же слово может отличаться при отрисовке длиной и начертанием в зависимости от того выводится ли оно через ExtTextOut или DrawTextможете пример привести такого слова ?
...
Рейтинг: 0 / 0
29.10.2017, 20:23:39
    #39544060
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
Ghost Writerможете пример привести такого слова ?Завтра на работе постараюсь найти пример
...
Рейтинг: 0 / 0
29.10.2017, 20:25:12
    #39544062
asviridenkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
white_nigger,

Посмотрел вашу демку, права не последнюю. Насколько понял, у вас поддержки RTL языков вообще нет. Это так?
...
Рейтинг: 0 / 0
29.10.2017, 21:02:54
    #39544073
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
asviridenkovПосмотрел вашу демку, права не последнюю. Насколько понял, у вас поддержки RTL языков вообще нет. Это так?Мы не заявляли поддержку RTL в своих продуктах. Более того даже в .NET она далеко не вся реализована
...
Рейтинг: 0 / 0
30.10.2017, 10:39:05
    #39544221
NetObserver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DrawText и табуляция
AniskinЭти утекшие исходники я качал в свое время с thepiratebay. Есть два разных архива - windows_nt_4_source_code.zip (229 MB) и windows_2000_source_code.zip (203 MB).
Ага, помню тоже скачал исходники NT4, а через неделю ко мне приходит админ конторы где я работал и показывает грозное письмо от мелкософт! Как то вычислили по IP, самки собаки. Пришлось потереть и ответить, что не специально, а по глупости.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DrawText и табуляция / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]