Как выровнять печатаемые на объекте строки? - Visual Basic .NET

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

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

Всем здравствуйте.
Листинг программы
  1. Public Class Form1
  2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  3. 'Рисуем числовые меткы шкалы делений
  4. Dim gr As Graphics
  5. Dim str As String
  6. Dim val As Single
  7. Dim size As SizeF
  8. Dim font As Font
  9. Dim br As New SolidBrush(Color.Red)
  10. font = New Font("Microsoft Sans Serif", 20, System.Drawing.FontStyle.Bold)
  11. gr = Me.CreateGraphics
  12. Dim x, y As Integer
  13. x = 50
  14. y = 450
  15. val = -25
  16. For i As Integer = 0 To 10
  17. str = Format(val, "0.00")
  18. size = gr.MeasureString(str, font)
  19. gr.DrawString(str, font, br, x, y)
  20. val += 5
  21. y -= 40
  22. Next i
  23. End Sub
  24. End Class
Как видно, все строки выровнены по левому краю. Как выровнять их по правому краю? Как выровнять их по центру?

Решение задачи: «Как выровнять печатаемые на объекте строки?»

textual
Листинг программы
  1.  '(на чем рисовать, начальная Х, начальная У, позиционирование по горизонтали)
  2.  Private Sub DrawMetrics(ByVal tObject As Object, Optional ByVal pX As Integer = 0, Optional ByVal pY As Integer = 0, Optional ByVal Align As System.Drawing.ContentAlignment = ContentAlignment.TopLeft)
  3.   Dim gr As Graphics
  4.   Dim str As String
  5.   Dim val As Single
  6.   Dim size As SizeF
  7.   Dim font As Font
  8.   Dim i, ti, MaxWidth, tSpace, y As Integer
  9.   Dim br As New SolidBrush(Color.Red)
  10.   font = New Font("Microsoft Sans Serif", 20, System.Drawing.FontStyle.Bold)
  11.   gr = tObject.CreateGraphics
  12.   ti = 10 'кол-во маркеров
  13.   val = -25
  14.   tSpace = 5 'расстояние между блоками текста
  15.   '#Region "MaxWidth" 'если MaxWidth используется в дальнейшем
  16.   MaxWidth = 0
  17.   For i = 0 To ti
  18.    str = Format(val, "0.00")
  19.    size = gr.MeasureString(str, font)
  20.    If size.Width > MaxWidth Then MaxWidth = size.Width
  21.    val += 5
  22.   Next i
  23.   val = -25
  24.   '#End Region '"MaxWidth"
  25.   gr.DrawLine(Pens.Black, pX, 0, pX, tObject.Height) 'это просто для отрисовки рХ. можно потом убрать
  26.   For i = 0 To ti
  27.    str = Format(val, "0.00")
  28.    size = gr.MeasureString(str, font)
  29.    Select Case Align
  30.     Case ContentAlignment.TopLeft, ContentAlignment.MiddleLeft, ContentAlignment.BottomLeft 'выравнивание по левому краю
  31.      gr.DrawString(str, font, br, pX, pY + y) 'справа от рХ
  32.      'gr.DrawString(str, font, br, pX - MaxWidth \ 2, pY + y) 'на рХ
  33.      'gr.DrawString(str, font, br, pX - MaxWidth, pY + y) 'слева от рХ
  34.     Case ContentAlignment.TopCenter, ContentAlignment.MiddleCenter, ContentAlignment.BottomCenter 'выравнивание по центру
  35.      gr.DrawString(str, font, br, pX + (MaxWidth - size.Width) \ 2, pY + y) 'справа от рХ
  36.      'gr.DrawString(str, font, br, pX - size.Width \ 2, pY + y) 'на рХ
  37.      'gr.DrawString(str, font, br, pX - size.Width, pY + y) 'слева от рХ
  38.     Case ContentAlignment.TopRight, ContentAlignment.MiddleRight, ContentAlignment.BottomRight 'выравнивание по правому краю
  39.      gr.DrawString(str, font, br, pX + MaxWidth - size.Width, pY + y) 'справа от рХ
  40.      'gr.DrawString(str, font, br, pX + MaxWidth \ 2 - size.Width, pY + y) 'на рХ
  41.      'gr.DrawString(str, font, br, pX - size.Width, pY + y) 'слева от рХ
  42.    End Select
  43.    y += size.Height + tSpace
  44.    val += 5
  45.   Next i
  46.   gr.Dispose()
  47.  End Sub

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


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

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

6   голосов , оценка 3.833 из 5

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

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

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