Как выровнять печатаемые на объекте строки? - Visual Basic .NET
Формулировка задачи:
Всем здравствуйте.
Как видно, все строки выровнены по левому краю. Как выровнять их по правому краю? Как выровнять их по центру?
Решение задачи: «Как выровнять печатаемые на объекте строки?»
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