Иллюстрированный самоучитель по VB.NET


         

При выводе текста необходимо



12 Dim TheFonts As System.Drawing.Text.FontCollection

13 Dim tempFont As Font

14 Dim spacing As Integer = 2 ' Вывод с интервалом 2 пиксела

15 TheFonts =New System.Drawing.Text.InstalledFontCollection()

16 For Each aFontFamily In TheFonts.Families

17 Me.Height += 2

18 If aFontFamily.IsStyleAvailable(FontStyle.Regular) Then

19 tempFont =New Font(aFontFamily. 14. FontStyle.Regular)

20 Elself aFontFamily.IsStyleAvailable(FontStyle.Bold) Then

21 tempFont =New Font(aFontFamily, 14. FontStyle.Bold)

22 Elself aFontFamily.IsStyleAvailable(FontStyle.Italic) Then

23 tempFont =New Font(aFontFamily, 14. FontStyle.Italic)

24 End If

25 g.DrawString("Thls is displayed in " & aFontFamily.Name._

26 tempFont. Brushes.Black, curx, curY)

27 DimtheSizeAs SizeF = g.MeasureString("This text is displayed in "_

28 & aFontFamily.Name. tempFont)

29 curY = curY + theSize.Height + spacing

30 Me.Height = Me.Height + CIntCtheSize.Height) + spacing

31 Me.Width = Math.Max(CInt(theSize.Width). Me.Width)

32 Next

33 End Sub

34 End Class

Обратите внимание: в строке 6 функции Displayfonts, определяемой в строках 8-33, передается текущий графический контекст — вместо того, чтобы создавать новый графический контекст вызовом Me.CreateGraphics(). В исходной версии эта вспомогательная процедура получала собственный контекст вместо использования контекста ре.Graphics, переданного в объекте PaintEventArgs. По каким-то загадочным причинам такое решение не работало. Закомментированный вызов Me. CreateGraphics0 остался в строке 9; при желании снимите комментарий и посмотрите, к чему это приведет.

При выводе текста необходимо знать высоту каждой строки. Высота вычисляется

в строках 27 и 28 очень полезной функцией MeasureString:
Public Function MeasureString(String.Font) As SizeF
Функция возвращает объект класса Si zeF — разновидность структуры Si ze, в которой вместо типа Integer используется тип Single. Поскольку класс SizeF содержит вещественные числа, в строках 30 и 31 преобразование осуществляется функцией CInt.В строке 30 происходит наращивание высоты графического поля, а строка 31 гарантирует, что ширина поля позволяет вместить самую длинную из выводимых строк. Проверка осуществляется методом Мах класса Math.

Содержание  Назад  Вперед