Подскажите идею как вывести текст в прямоугольнике цветным текстом, так ка это делает функция DrawText с флагом DT_WORDBREAK и возможностью горизонтального форматирования.
Здравствуйте, Vladimir, Вы писали:
V>Подскажите идею как вывести текст в прямоугольнике цветным текстом, так ка это делает функция DrawText с флагом DT_WORDBREAK и возможностью горизонтального форматирования.
Хм, а в чем проблема ?
SetTextColor — цвет текста,
SetBkColor — цвет фона ,
SetBkMode — можно поставить TRANSPARENT
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, Vladimir, Вы писали:
V>>Подскажите идею как вывести текст в прямоугольнике цветным текстом, так ка это делает функция DrawText с флагом DT_WORDBREAK и возможностью горизонтального форматирования.
PD>Хм, а в чем проблема ?
PD>SetTextColor — цвет текста, PD>SetBkColor — цвет фона , PD>SetBkMode — можно поставить TRANSPARENT
Пример вывода:
Это пример вывода
текста функцией DrawText с флагами
форматирования DT_LEFT
| DT_WORDBREAK
Нельзя вывести весь текст одной функцией DrawText. Необходимо менять DC.
Вывод текст надо так:
TextOut(hdc, Это пример вывода);
TextOut(hdc, текста);
TextOut(hdcBOLD, функцией);
TextOut(hdcBOLD, DrawText);
и т.д.
hdcBOLD — это контекст связанный с жирным фонтом.
Может быть есть пример реализации подобного вывода текста.
Интересует также флаги DT_RIGHT, DT_CENTER и DT_JUSTIFY (такого флага нет, но SetTextJustification нельзя применить)
Здравствуйте, Vladimir, Вы писали:
V>Нельзя вывести весь текст одной функцией DrawText. Необходимо менять DC.
Не надо менять DC, надо его настраивать. Надо просто с помощью CreateFont[Indirect] создать 2 шрифта : обычный и жирный, и поочередно перед TextOut выбирать (SelectObject) нужный шрифт. Более одного HDC вывод текста не требует.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, Vladimir, Вы писали:
V>>Подскажите идею как вывести текст в прямоугольнике цветным текстом, так ка это делает функция DrawText с флагом DT_WORDBREAK и возможностью горизонтального форматирования.
PD>Хм, а в чем проблема ?
PD>SetTextColor — цвет текста, PD>SetBkColor — цвет фона , PD>SetBkMode — можно поставить TRANSPARENT
Я знаю как выводить, как подставлять шрифты.
Меня интересует алгоритм расчета координат вывода текста.
Есть предложение посчитать координаты начала и конца каждого слова, потом пересчитать их относительно прямоугольника вывода.
Внутреннее чутье подсказывает что можно как-то проще !
Конечная задача вывести текст который на HTML выглядел бы так:
<div width="200">Текст, <b>который</b> нужно <i>вывести</i> в окне div, <span style="color:red;">выровненный</spzn> по ширине</div>
Я уже что-то запутался. Сначала надо было нарисовать цветом. Потом появился какой-то второй DC, непонятно зачем. Теперь выясняется, что проблема в расчете координат. Ладно.
GetTextExtentPoint32 возвращает размеры прямоугольника текста на заданном HDC при выбранном HFONT.
Если надо выравнять текст по ширине или как-то еще, то предварительно SetTextAlign.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, Vladimir, Вы писали:
V>>Меня интересует алгоритм расчета координат вывода текста.
PD>GetTextExtentPoint32 возвращает размеры прямоугольника текста на заданном HDC при выбранном HFONT. PD>Если надо выравнять текст по ширине или как-то еще, то предварительно SetTextAlign.
Попробую совсем просто!
Как вывести следующий текст, выровненный по центру в прямоугольнике размером 300 пикселей.
-- Вывод простого текста
(Слово "простого" выделено жирным шрифтом)
Здравствуйте, Vladimir, Вы писали:
V>Попробую совсем просто! V>Как вывести следующий текст, выровненный по центру в прямоугольнике размером 300 пикселей. V>-- Вывод простого текста V>(Слово "простого" выделено жирным шрифтом)
Вот теперь понятно.
AFAIK таких средств (то есть со сменой шрифта) нет, только вручную
1. Выбираем в HDC регулярный шрифт, GetTextExtentPoint32 для слова "Вывод"
2. Выбираем в HDC жирный шрифт, GetTextExtentPoint32 для слова "простого"
3. Выбираем в HDC регулярный шрифт, GetTextExtentPoint32 для слова "текста"
4. Находим сумму длин по x
5. Рассчитываем пропуски между словами, находи координаты слов
6. Вывод пословно по этим координатам, выбирая в HDC нужный шрифт.
Здравствуйте, Vladimir, Вы писали:
V>Подскажите идею как вывести текст в прямоугольнике цветным текстом, так ка это делает функция DrawText с флагом DT_WORDBREAK и возможностью горизонтального форматирования.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>AFAIK таких средств (то есть со сменой шрифта) нет, только вручную
PD>1. Выбираем в HDC регулярный шрифт, GetTextExtentPoint32 для слова "Вывод" PD>2. Выбираем в HDC жирный шрифт, GetTextExtentPoint32 для слова "простого" PD>3. Выбираем в HDC регулярный шрифт, GetTextExtentPoint32 для слова "текста" PD>4. Находим сумму длин по x PD>5. Рассчитываем пропуски между словами, находи координаты слов PD>6. Вывод пословно по этим координатам, выбирая в HDC нужный шрифт.
Здравствуйте, Vladimir, Вы писали:
V>Подскажите идею как вывести текст в прямоугольнике цветным текстом, так ка это делает функция DrawText с флагом DT_WORDBREAK и возможностью горизонтального форматирования.