Как выровнять печатаемые на объекте строки? - Visual Basic .NET
Формулировка задачи:
Всем здравствуйте.
Как видно, все строки выровнены по левому краю. Как выровнять их по правому краю? Как выровнять их по центру?
Листинг программы
- Public Class Form1
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- 'Рисуем числовые меткы шкалы делений
- Dim gr As Graphics
- Dim str As String
- Dim val As Single
- Dim size As SizeF
- Dim font As Font
- Dim br As New SolidBrush(Color.Red)
- font = New Font("Microsoft Sans Serif", 20, System.Drawing.FontStyle.Bold)
- gr = Me.CreateGraphics
- Dim x, y As Integer
- x = 50
- y = 450
- val = -25
- For i As Integer = 0 To 10
- str = Format(val, "0.00")
- size = gr.MeasureString(str, font)
- gr.DrawString(str, font, br, x, y)
- val += 5
- y -= 40
- Next i
- End Sub
- End Class
Решение задачи: «Как выровнять печатаемые на объекте строки?»
textual
Листинг программы
- '(на чем рисовать, начальная Х, начальная У, позиционирование по горизонтали)
- 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)
- Dim gr As Graphics
- Dim str As String
- Dim val As Single
- Dim size As SizeF
- Dim font As Font
- Dim i, ti, MaxWidth, tSpace, y As Integer
- Dim br As New SolidBrush(Color.Red)
- font = New Font("Microsoft Sans Serif", 20, System.Drawing.FontStyle.Bold)
- gr = tObject.CreateGraphics
- ti = 10 'кол-во маркеров
- val = -25
- tSpace = 5 'расстояние между блоками текста
- '#Region "MaxWidth" 'если MaxWidth используется в дальнейшем
- MaxWidth = 0
- For i = 0 To ti
- str = Format(val, "0.00")
- size = gr.MeasureString(str, font)
- If size.Width > MaxWidth Then MaxWidth = size.Width
- val += 5
- Next i
- val = -25
- '#End Region '"MaxWidth"
- gr.DrawLine(Pens.Black, pX, 0, pX, tObject.Height) 'это просто для отрисовки рХ. можно потом убрать
- For i = 0 To ti
- str = Format(val, "0.00")
- size = gr.MeasureString(str, font)
- Select Case Align
- Case ContentAlignment.TopLeft, ContentAlignment.MiddleLeft, ContentAlignment.BottomLeft 'выравнивание по левому краю
- gr.DrawString(str, font, br, pX, pY + y) 'справа от рХ
- 'gr.DrawString(str, font, br, pX - MaxWidth \ 2, pY + y) 'на рХ
- 'gr.DrawString(str, font, br, pX - MaxWidth, pY + y) 'слева от рХ
- Case ContentAlignment.TopCenter, ContentAlignment.MiddleCenter, ContentAlignment.BottomCenter 'выравнивание по центру
- gr.DrawString(str, font, br, pX + (MaxWidth - size.Width) \ 2, pY + y) 'справа от рХ
- 'gr.DrawString(str, font, br, pX - size.Width \ 2, pY + y) 'на рХ
- 'gr.DrawString(str, font, br, pX - size.Width, pY + y) 'слева от рХ
- Case ContentAlignment.TopRight, ContentAlignment.MiddleRight, ContentAlignment.BottomRight 'выравнивание по правому краю
- gr.DrawString(str, font, br, pX + MaxWidth - size.Width, pY + y) 'справа от рХ
- 'gr.DrawString(str, font, br, pX + MaxWidth \ 2 - size.Width, pY + y) 'на рХ
- 'gr.DrawString(str, font, br, pX - size.Width, pY + y) 'слева от рХ
- End Select
- y += size.Height + tSpace
- val += 5
- Next i
- gr.Dispose()
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д