Определение размера символа для текущего шрифта - VB

Узнай цену своей работы

Формулировка задачи:

Используя DirectX, я вывожу текст на поверхность: ddsBack.DrawText kx, ky, Value, False Я хочу, что бы текст помещался в определенный объект, а не вылезал за его пределы. Поскольку каждый символ имеет свой размер, как узнать размер символа для данного шрифта? И как менять шрифт в DX ?

Решение задачи: «Определение размера символа для текущего шрифта»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
  4. Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  5. Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
  6. Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
  7. Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As SIZE) As Long
  8.  
  9. Private Type SIZE
  10.     cx As Long
  11.     cy As Long
  12. End Type
  13.  
  14. Public Function vbGetTextWidth(ByVal strSource As String, Font As StdFont) As Long
  15.     Dim myFont As IFont ' We want the IFont interface
  16.    Dim hFont As Long
  17.     Dim mySize As SIZE
  18.     Dim hdc As Long
  19.    
  20.     Set myFont = Font ' switch interface
  21.    myFont.SIZE = Font.SIZE * 1000 ' increases accuracy since resultant mysize only hold longs
  22.    
  23.     hdc = CreateCompatibleDC(0) ' compatible with screen display
  24.    hFont = SelectObject(hdc, myFont.hFont)
  25.     GetTextExtentPoint32 hdc, strSource, Len(strSource), mySize
  26.    
  27.     'Clean up as much as we need to
  28.    SelectObject hdc, hFont
  29.     DeleteDC hdc
  30.    
  31.     vbGetTextWidth = mySize.cx / 1000 ' bring back to normal
  32. End Function
  33.  
  34. Private Sub Command1_Click()
  35.     Dim lngTextWidth As Long
  36.     lngTextWidth = vbGetTextWidth("A", Me.Font)
  37. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы