Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Длина текста Добавлено: 07.07.04 15:47  

Автор вопроса:  Ujif | Web-сайт: - | ICQ:
Надо найти длину строки в пикселях с заданным шрифтом(Если меня кто-то понял помогите!!!!!!!!!!!!!!!!!!!!!!!!!)

Ответить

  Ответы Всего ответов: 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-сайт: hw.t-k.ru
 Профиль | | #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



Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам