|
1 / 1 / 0
Регистрация: 06.05.2018
Сообщений: 162
|
|||||||||||
Отрисовка RTF на канве20.02.2020, 15:02. Показов 2918. Ответов 30
Метки canvas, createrange, designmode, document, execcommand, oleobject, pastehtml, richedit, rtf, rtf формат, selection, tcanvas, trichedit, twebbrowser, webbrowser, отрисовка rtf (Все метки)
Добрый день.
Хочу отричовать RTF текст на канве, в идеале мечтаю сотворить что-то вроде:
За неимением варианта без TRichEdit пробую рисовать текст с ним - рисует, но есть проблема. Текст рисуется вместе с фоном TRichEdit (белая заливка) и убрать его не могу, делаю так:
Или как ричовать RTF вообще без RichEdit?
0
|
|||||||||||
| 20.02.2020, 15:02 | |
|
Ответы с готовыми решениями:
30
Некорректная отрисовка графика на канве Рисование на канве Рисование на канве |
|
Заблокирован
|
||||||
| 02.03.2020, 13:00 | ||||||
NB Важные моменты о которых спотыкаются не только новички Рисовать надо исключительно в обработчике Paint. Для любителей компонента Image, поясню. Там всё тоже самое но сделано за пользователя. Для рисования на всём остальном, надо делать ручками. Рисовать на отдельных битмапах а потом отрисовывать их на объекте вывода. Или рисовать прямо в обработчике Paint В DirectX делается так же. Там нет промежуточных битмапов, но есть буферы. Ещё один момент. Очень важный. Любые свойства нужно задавать непосредственно перед отрисовкой той или иной группы объектов, если что-то меняется. Добавлено через 25 минут Судя по задумке, автор поста хочет сделать нечто очень для него сложное. И тут не один вопрос а сразу несколько. 1 Формат RTF Но RTF это формат исключительно для хранения текста. Манипулировать им крайне сложно и долго. Даже в Word любой другой формат преобразовывается в свой внутренний, а только потом выводится. Проще всего использовать XML или его подмножество HML. Это если нужен вывод с сложным форматированием Но тут нужно писать как минимум парсер. 2 Само рисование. Главный вопрос Где и Зачем. Вопрос очень важный. Но главнее, какие именно элеменеты форматирования нужны. Основной момент. Текст в Делфи по умолчанию выводится без Антиалисинга. То есть без сглаживания. Можно конечно обратится к API и включить антиалисинг. А можно взять GDI+ однако это тормоз ещё тот... Но выход есть. Это учится учится и учится не боясь трудностей. Дело в том, что кода выводящего текст с форматированием крайне мало. Все пишут его для себя а выдать - жаба давит, ибо это действительно высший пилотаж программирования. Когда были такие модули для вывода теста с тегами, но ссылки все сдохли, а до авторов не достучишься. Есть готовые компоненты для рисования в собственном браузере. Можно воспользоваться им. А если делать всё самому - готовьтесь к трудностям и сложностям. Я знаю что это такое. Я сам написал для себя подобную функцию. Но писал я её в КОL. КОL крайне непривычная библиотека для многих. Но в ней есть многие вещи, которые в VCL приходится делать ручками. Например для каждого компонента есть перетаскивание. Есть Антиалистинг для текста. Есть Юникод без дополнительных библиотек. Но много чего нет. Но это всё ненужный мусор. Впрочем вам решать. Я могу вас научить как всё это сделать и без KOL Но повторяю, это очень сложно для новичка.
0
|
||||||
|
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
|
|
| 02.03.2020, 14:01 | |
|
RADStudio
Может попытаться сделать так: 1) рисуешь то, что нужно в битмап 2) ставишь этот битмап как фоновый рисунок для RichEdit
0
|
|
|
Заблокирован
|
||||||
| 02.03.2020, 17:02 | ||||||
|
Теперь немного о текстовой геометрии.
Сам шрифт можно настроить средствами Delphi как обычно Но. Забываем про SIZE пользуемся HEIGHT то есть высотой шрифта в пикселях. Шрифты не моноширные, и поэтому ширина каждого символа разная. Она даётся автоматически в зависимости от высоты и получит её можно функцией ..Canvas.TextWidth(S) Когда текст выводится цепочкой, это очень важный параметр. Но. Текст для с форматированием выводится по символам. И этот параметр становится наиглавнейшим. Второй важный параметр это позиция текста. Вообще текст можно позиционировать по 9 точкам. Задаётся двумя флагами. По горизонтали и по вертикали Лево центр право Верх .... Низ По умолчанию это верхний левый угол. Левая сторона будет всё время. Но по вертикали нужно нам то, что пока .... Попробуйте вывести текст разной высоты TOP - первый в примере BOTTOM второй Сами видите что выходит Нужен нам то что было точками - BASLINE Базовая линия текста. По этой линии выравнивается весь текст. Это нижняя часть всех символов, без всяких хвостиков. Эти хвостики и закорючки , как в букве Щ у запятой, находятся под базовой линией. В общем посмотрите пример и увидите что только с базовой линией текст не скачет. И вращать текст нужно задав базовую линию. Но после отрисовки текста не забывайте вернуть всё на место. И вообще за параметрами надо строго следить.
0
|
||||||
|
|
|
| 02.03.2020, 23:26 | |
|
Wolwirk, тут вы немножко не в тему, речь как бы совершенно вообще не об рисовании обычными GDI/Canvas...
0
|
|
|
Заблокирован
|
|||
| 03.03.2020, 00:33 | |||
|
Пожалуйста ещё раз внимательно прочитайте самый первый пост. Добавлено через 4 минуты Я писал для юникода, но потом решил что не стоит пока запутывать. А тип изменить забыл Впрочем и Form1. можно убрать.
0
|
|||
|
|
|||
| 03.03.2020, 00:53 | |||
|
Форматированный. RTF.
Добавлено через 2 минуты У человека строка с RTF-текстом. Например: Ему это вручную сначала разгребать, а потом и рисовать тоже вручную..? Добавлено через 38 секунд В любом случае вопрос уже решён, остались лишь незначительные нюансы.
0
|
|||
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,497
|
||
| 03.03.2020, 09:48 | ||
|
1) Использовать имеющиеся форматы и наработки. RTF уже есть, его можно легко создать в разных программах. 2) Придумать свой формат и написать свою процедуру вывода форматированного текста. Потом написать свой редактор для своего формата, или конвертер из уже имеющегося формата, например, RTF. А если писать конвертер из RTF, то уже сразу можно написать и свой вывод форматированного текста RTF. Вернулись к началу задачи.
0
|
||
|
Заблокирован
|
||
| 03.03.2020, 11:08 | ||
|
Если бы я взял RTF, Текст, который и без того полмегабайта вырос бы до неимоверной величины. И его обработка украла бы много драгоценного времени в игре, ровно как и в генераторе титров для DVD. Кроме того, я сомневаюсь чтобы ваши решения подошли бы человеку, по той простой причине что речь шла не сколько о RTF сколько о тексте на фотографии или картинке. Причём красивого текста. Кроме того я не знаю что делает ваше решение, но помимо прочего нужно выравнивание текста по ширине, причём с переносом слов по мягким переносам. Да, есть такая возможность в RTF модуле, но она имеет много неудобств. Писать редактор RTF вообще нет смысла. Это всё можно прекрасно сделать и в ворде. Дело именно в применении текста в графике. А это ещё помимо прочего и спецэффекты всякого рода. Один из актуальных вопросов это чёткость текста. А это вопрос далеко не так прост. На картинке просто текст может сливаться с фоном и для устранения этого недостатка нужно его оконтуривание. Но опять же, это надо делать. И остаётся проблема с сглаживанием. Её то тоже нужно как-то решать. Вопросов много. И если вы хотя бы на эти ответите - да, это сделано в моём предложении, можете писать мне разгромные посты и обвинять меня в некомпетентности вопроса.
0
|
||
|
Заблокирован
|
|
| 03.03.2020, 11:43 | |
|
Чтобы не быть голословным, вот демопроект самой первой версии этой функции. Нет ещё юникода, нет пока стилей.
Отрабатывался этот модуль под конкретную задачу и поэтому введён эффект постепенного вывода текста. Текст для вывода задан в файле 1.txt Туда можно вставить любой текст. Собственно готовый текст делается у меня в ворде через макрос. Кроме того, функция следит за величиной текста и выводит только в поле, которое задано рамками. Лишний текст обрезается. Сейчас уже и юникод есть и другие штучки, но не суть. Я ,собственно, хотел чтобы человек научился писать нечто подобное или лучше. Но если ему не надо, то ладно. Вот екзешник. Исходника конечно не дам. Сами должны писать. А помочь - помогу если есть у кого желание. Кстати, обратите внимание на размер файла. Это фишка KOL
0
|
|
|
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
|
|
| 03.03.2020, 16:07 | |
|
0
|
|
|
|
|
| 03.03.2020, 19:06 | |
|
Мы вам объясняем, у ТС текст в формате RTF.
И предполагается два режима ввода - компонент TRichEdit или RTF-файл. Требуется вывести содержимое RTF-документа поверх битмапа с его текущим форматированием как есть. Только без белого фона листа. И ТС уже сам нашёл код, который именно это успешно делает. На WinAPI.
0
|
|
| 03.03.2020, 19:06 | |
|
Время на канве Диаграмма на канве Графики на канве Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|