Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];

Вниз

разрядить строки в DrawText   Найти похожие ветки 

 
Dmitry S ©   (2008-04-20 00:11) [0]

Вывожу текст с помощью DrawText (с DT_WORDBREAK).
Есть какая либо возможность разрядить строки на нужное мне количество точек (логических единиц устройства)?

У меня пока два варианта: 1. Отказаться от DT_WORDBREAK: добиваться эффекта переноса вручную.
2. Выводить текст сперва в метафайл, а затем уже копировать по частям в данный DC.


 
Eraser ©   (2008-04-20 01:01) [1]

> [0] Dmitry S ©   (20.04.08 00:11)

т.е. задача - сделать выравнивание по ширине?
советую глянуть в сторону уже реализованых примеров. не помню, есть ли такое в TRichView.. возможно есть.


 
Dmitry S ©   (2008-04-20 01:04) [2]

Нет. Задача "растянуть" текст по ветикали: добавить межстрочный интервал.

Аналог "полуторного интервала" в Wordе.


 
Eraser ©   (2008-04-20 01:16) [3]

> [2] Dmitry S ©   (20.04.08 01:04)

тейксейра, пачеко "Руководство разработчика Delphi 5", 1 том. Там есть глава про шрифты. книга есть на сайте у Анатолия Подгорецкого.

PS см. TLogFont.


 
Dmitry S ©   (2008-04-20 01:19) [4]


> PS см. TLogFont.

Тут ничего про межстрочный интервал
typedef struct tagLOGFONT { // lf  
  LONG lfHeight;  <-- высота символов (размер шрифта)
  LONG lfWidth;
  LONG lfEscapement;
  LONG lfOrientation;
  LONG lfWeight;
  BYTE lfItalic;
  BYTE lfUnderline;
  BYTE lfStrikeOut;
  BYTE lfCharSet;
  BYTE lfOutPrecision;
  BYTE lfClipPrecision;
  BYTE lfQuality;
  BYTE lfPitchAndFamily;
  TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT;


 
Eraser ©   (2008-04-20 01:31) [5]

lfHeight
Specifies the height, in logical units, of the font"s character cell or character. The character height value (also known as the em height) is the character cell height value minus the internal-leading value. The font mapper interprets the value specified in lfHeight in the following manner.

думаю с этим подробнее разобраться надо.


 
Dmitry S ©   (2008-04-20 01:37) [6]


> Eraser ©

Вы серьезно думаете, что это то, что нужно?
По-моему, lfHeight задает только высоту символов.


 
Eraser ©   (2008-04-20 02:01) [7]

мне проверять лень, но ведь английским по белому написано, что 2 параметра задавать можно.


 
{RASkov} ©   (2008-04-20 02:46) [8]

Имхо... ЛогФонт здесь поможет мало.... меньше чем функция ДравТекст....
Т.е. из [0] первый вариант. Помоему не сложно реализовать...
N:=DrawText(...., R, ... or DT_MODIFYSTRING);
INC(R.Top, N+J);
J - межстрочный интервал, расчитать тоже не проблема...
R - Rect(область) соб-сно вывода одной строки, которая(выведенная строка, часть текста) вычитается из всего выводимого текста...
Что-то в этом плане должно получится....


 
Dmitry S ©   (2008-04-20 10:43) [9]


> мне проверять лень, но ведь английским по белому написано,
>  что 2 параметра задавать можно.

Перевожу как понимаю: Высота ячейки символа или символа (в логических единицах). Значение высоты символа (также известного как EM-высота - это высота ячейки символа с вычетом внутреннего интервала. Font mapper понимает значение lfHeight следующим образом: (и дальше рассказывается для чего отрицательные и положительные значения...).
Внутренний интервал пространство где, например, находятся точки у буквы Ё.
Ничего не сказано про то, что в lfHeight можно запихать два параметра.


> {RASkov} ©   (20.04.08 02:46) [8]

Это очень интересно. Сейчас попробую, о результатах доложу:)



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.048 c
15-1235251801
Юрий
2009-02-22 00:30
2009.04.19
С днем рождения ! 22 февраля 2009 воскресенье


15-1226079166
123-ий
2008-11-07 20:32
2009.04.19
Локальная сеть так её растак :)


4-1208323371
EgorovAlex
2008-04-16 09:22
2009.04.19
Есть список установленных драйверов принтеров, как определить


15-1235162649
alex-drob
2009-02-20 23:44
2009.04.19
Вопрос по сокетам в java


2-1235749905
Denis__
2009-02-27 18:51
2009.04.19
ASM





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский