Страница: 1 |
Страница: 1 |
Вопрос: Длина текста
Добавлено: 07.07.04 15:47
Автор вопроса: Ujif | Web-сайт:
Надо найти длину строки в пикселях с заданным шрифтом(Если меня кто-то понял помогите!!!!!!!!!!!!!!!!!!!!!!!!!)
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #1
Добавлено: 07.07.04 16:48
BOOL GetTextExtentPoint32(
HDC hdc, // handle to DC
LPCTSTR lpString, // text string
int cbString, // characters in string
LPSIZE lpSize // string size
);
Parameters
hdc
[in] Handle to the device context.
lpString
[in] Pointer to a buffer that specifies the text string. The string does not need to be zero-terminated, because the cbString parameter specifies the length of the string.
cbString
[in] Specifies the length of the lpString buffer. For the ANSI function it is a BYTE count and for the Unicode function it is a WORD count. Note that for the ANSI function, characters in SBCS code pages take one byte each, while most characters in DBCS code pages take two bytes; for the Unicode function, most currently defined Unicode characters (those in the Basic Multilingual Plane (BMP)) are one WORD while Unicode surrogates are two WORDs.
Windows 95/98/Me: This value may not exceed 8192.
lpSize
[out] Pointer to a SIZE structure that receives the dimensions of the string, in logical units.
SIZE structure - это аналог POINTAPI
Эта ф-ция возвращает длину и высоту строки для данного hDC, что касается шрифта, то его для начала надо SelectObject,hDC,hFont - то есть приклеить к данному hDC. Просто для шрифта, без контекста устройства ф-ция не сработает.
Номер ответа: 2
Автор ответа:
Alex3
ICQ: 9481061
Вопросов: 18
Ответов: 132
Профиль | | #2
Добавлено: 07.07.04 17:27
Зачем же так извращаться-то? Можно и проще:
Dim gr As System.Drawing.Graphics = Me.CreateGraphics
Dim txt As String = "Test"
Dim Font As System.Drawing.Font = Me.Font
MsgBox(gr.MeasureString(txt, Font).Width())
Номер ответа: 3
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #3
Добавлено: 07.07.04 18:17
Оказывается, это .net - чёрт меня сюда занёс
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 07.07.04 19:10
Раз проблемма уже решена, для cresta, хочу сказать еще что для этого не тока GetTextExtentPoint32 может использоваться, но и DrawText с флагом DT_CALLRECT, кажется так константа зовется...
Номер ответа: 5
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #5
Добавлено: 07.07.04 20:01
To sne:
DrawText не очень хорошо, если надо определить ширину, не выводя сам текст при этом. А GetTextExtentPoint32 позволяет определить ширину не выводя текст, подстроить если надо RECT и затем выводить
Номер ответа: 6
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #6
Добавлено: 07.07.04 20:17
Хотя с DT_CALLRECT текст не выводится... Мда.
Номер ответа: 7
Автор ответа:
Артём Л.
ICQ: 280044491
Вопросов: 43
Ответов: 227
Профиль | | #7
Добавлено: 07.07.04 20:36
смотри в Graphic.MesureString
Номер ответа: 8
Автор ответа:
Артём Л.
ICQ: 280044491
Вопросов: 43
Ответов: 227
Профиль | | #8
Добавлено: 07.07.04 21:41
смотри в Graphic.MesureString
Номер ответа: 9
Автор ответа:
Артём Л.
ICQ: 280044491
Вопросов: 43
Ответов: 227
Профиль | | #9
Добавлено: 07.07.04 23:17
смотри в Graphic.MesureString